我正在尝试从表中选择具有相同grouping_attribute的前N个最大组的group_items,并执行以下操作:
SELECT grouping_attribute, group_item,
ROW_NUMBER() OVER (PARTITION BY grouping_attribute ORDER BY ???) AS rn
FROM a_table
WHERE rn < N;
但是我不知道在ORDER BY子句中放入什么来实现它。我正在尝试按相应分区的大小排序行。 COUNT(*)无法运行。我希望有一些方法来引用分区的大小,但我找不到任何东西。
答案 0 :(得分:1)
如果我理解正确,您希望count(*)
不是row_number()
。使用count(*)
获取分区的大小,然后对结果行进行排序。例如:
SELECT a.*
FROM (SELECT grouping_attribute, group_item,
COUNT(*) over (partition by grouping_attribute) as cnt
FROM a_table
) a
ORDER BY cnt DESC;