首页 > 解决方案 > ACCESS 按每个组的 COUNT 选择前 10 条记录

问题描述

我在 Office 365 的 MS Access 中遇到此查询问题。对于每个分组,我尝试按 ItemCount 选择前 10 行。因此,每个 GroupID 将显示前 10 个 ItemName 计数。我知道下面是错误的,因为它只会查询十条记录。我不知道从这里去哪里。我尝试了一个对项目进行排序的子查询,然后尝试提取前 10 个项目,但显然我做错了。

Select Top 10 GroupID, ItemName, COUNT(ItemName) as ItemCount
FROM Table
GROUP BY GROUPID, ItemName
Order By COUNT(ItemName) DESC;

任何建议表示赞赏

谢谢!

标签: sqlms-accesscountgrouping

解决方案


您可以使用相关子查询。这是一种方法:

select GroupID, ItemName, count(*) as ItemCount
from Table as t
group by groupid, ItemName
having count(*) in (select top 10 count(*)
                    from table as t2
                    where t2.groupid = t.groupid
                    group by t2.groupid, t2.itemname
                    order by count(*) desc
                   )
order by count(*) desc;

注意:如果存在平局,则给定组的行数可能会超过 10 行。


推荐阅读