sql - 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;
任何建议表示赞赏
谢谢!
解决方案
您可以使用相关子查询。这是一种方法:
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 行。
推荐阅读
- android - 使用 .isVisible 会导致游戏崩溃
- sql - 并非所有列都出现在 SQL 查询中
- sql - Sequelize + Squel.js:DatabaseError [SequelizeDatabaseError]:关系 Y 的列 X 不存在
- testng - 即使运行包含失败,也不会生成 testng-failed.xml
- git - git checkout 在你自己的 fork 上的 pull request 分支
- brightway - 如何将带参数的交易所添加到组中?
- python - 安装书签失败:“找不到与书签匹配的发行版”
- node.js - 寻找对我提出的架构的一些验证(或完全彻底的破坏)
- powershell - 在powershell中使用for循环创建自定义对象类型
- amazon-web-services - 每天在哪里拍摄 AWS 弹性搜索快照?