【发布时间】:2021-11-27 17:32:38
【问题描述】:
我正在查询一个记录表,以查找哪些用户是我对某些记录类型的主要记录创建者。我的查询的基本起点如下所示:
SELECT recordtype, createdby, COUNT(*)
FROM recordtable
WHERE recordtype in (...)
GROUP BY recordtype, createdby
ORDER BY recordtype, createdby DESC
但是有很多用户创建了记录 - 我想进一步缩小范围。
我添加了HAVING COUNT(*) > ...,但有些记录类型只有几条记录,而另一些则有数百条记录。如果我这样做HAVING COUNT(*) > 10,我不会看到所有 9 条“XYZ”类型的记录都是由同一个人创建的,但我必须滚动浏览每个人,这些人只创建了 15、30、50 等3,500 条“ABC”类型的记录。
我只想要每种记录类型的前 5、10 名左右的创建者。
我发现了一些解决问题的“选择组中前 N 个”部分的问题,但我不知道如何将它们应用于我需要的内容。我能找到的答案是“排名依据”列是存储在表中的值,而不是聚合值。
(例如:“每个国家/地区人口最多的城市是什么?”,数据如下所示:)
Country City Population United States New York 123456789 United States Chicago 123456789 France Paris 123456789
我不知道如何应用我见过的用于回答这个问题的方法(主要是row_number())来获得COUNT(*) 的前 N 个。
【问题讨论】:
标签: sql postgresql group-by