Sql ACCESS按每组计数选择前10条记录
我在Office 365的MS Access中遇到此查询问题。对于每个分组,我都尝试按ItemCount选择前10行。因此,每个GroupID将显示前10个ItemName计数。我知道下面的是错误的,因为它只会查询10条记录。我不知道从这里到哪里去。我尝试了一个子查询,该子查询对项目进行排序,然后尝试提取前10个项目,但我显然做错了Sql ACCESS按每组计数选择前10条记录,sql,ms-access,count,grouping,Sql,Ms Access,Count,Grouping,我在Office 365的MS Access中遇到此查询问题。对于每个分组,我都尝试按ItemCount选择前10行。因此,每个GroupID将显示前10个ItemName计数。我知道下面的是错误的,因为它只会查询10条记录。我不知道从这里到哪里去。我尝试了一个子查询,该子查询对项目进行排序,然后尝试提取前10个项目,但我显然做错了 Select Top 10 GroupID, ItemName, COUNT(ItemName) as ItemCount FROM Table GROUP BY
Select Top 10 GroupID, ItemName, COUNT(ItemName) as ItemCount
FROM Table
GROUP BY GROUPID, ItemName
Order By COUNT(ItemName) DESC;
有什么建议吗
谢谢 请尝试下面的方法,在子查询中使用TOP关键字
Select GroupID, ItemName, COUNT(ItemName) as ItemCount
FROM Table t1
WHERE ItemName in (
Select TOP 10 t2.ItemName
from Table t2
where t2.GroupID = t1.GroupID
order by count(t2.ItemName) desc, t2.ItemName
)
GROUP BY GROUPID, ItemName
Order By GROUPID, COUNT(ItemName) DESC;
可以使用相关子查询。这里有一种方法:
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多行。它当前会抛出一个错误,但我会继续尝试。子查询't2.ItemName'中的备忘录、OLE或超链接无效。@user3643304以前从未听到过错误,只是进行了研究,我认为这是因为“ItemName”的类型“一栏。是长期的吗?这里提供了一个解决方案:是的,它是一个长文本列。我会调查备忘录字段的事情。谢谢。我以为这就是问题所在,但查询被卡住了,没有进度条,只是没完没了地“运行查询”。@user3643304。升级数据库并使用窗口功能。或者创建一个包含聚合结果的临时表。