在sql中按分区大小排序组?

时间:2015-02-09 00:09:53

标签: sql

我正在尝试从表中选择具有相同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(*)无法运行。我希望有一些方法来引用分区的大小,但我找不到任何东西。

1 个答案:

答案 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;