Postgres查询使用group by和order by

时间:2014-11-13 05:07:46

标签: sql postgresql greatest-n-per-group

我有一个包含多个列的表格,我希望将其分组到该组中的一列我想要按其他列应用组,并且每个组需要前3个结果 例子

col1 col2  col3
1    1.9   2.6
1    1.2   3.5 
1    2.1   4.1
2    3.2   3.3
2    2.5   3.5
3    1.1   1.8
3    2.1   1.9

结果:

col1   col2    col3
1      1.2     2.6
1      1.9     3.5
1      2.1     4.1
2      2.5     3.3
2      3.2     3.5
3      1.1     1.8
3      2.1     1.9

我希望这个表的结果将在col1和每个组中进行摸索,并根据col2从每个组的col2和top3进行排序

1 个答案:

答案 0 :(得分:0)

这是典型的"每组最大的N"通常使用窗口函数解决的问题:

select col1, col2, col3
from (
   select col1, col2, col3,
          row_number() over (partition by col1 order by col2) as rn
   from the_table
) t
where rn <= 3
order by col1, col2;