Oracle分组查询取每组排序后的前N条记录

时间:2022-11-16 15:09:05

项目中用到Oracle分组查询取每组排序后的前N条记录,group by 只能返回每个组的单条统计。所以用OVER(PARTITION BY)函数,具体详见baidu.com

建个测试表test_abc,如图:

Oracle分组查询取每组排序后的前N条记录Oracle分组查询取每组排序后的前N条记录


要求查询出按B字段进行分组,每组取C值最大的前3位。
查询sql为 :
select * from (
SELECT b,c,row_number() OVER(PARTITION BY b ORDER BY c desc) e FROM test_abc) t where e <= 3

查询结果截图:
Oracle分组查询取每组排序后的前N条记录Oracle分组查询取每组排序后的前N条记录

记录完毕!