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

Posted 雅冰石

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle分组查询取每组排序后的前N条记录相关的知识,希望对你有一定的参考价值。

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

建个测试表test_abc,如图:

 要求查询出按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

查询结果截图:

 

记录完毕!

————————————————
版权声明:本文为CSDN博主「wangchsh2008」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wangchsh2008/article/details/53419991

以上是关于Oracle分组查询取每组排序后的前N条记录的主要内容,如果未能解决你的问题,请参考以下文章

oracle分组后的整条记录怎么取

Mysql 分组以后取每组的前三名数据

mysql分组后,取每组的前3条数据(并且有顺序)

oracle开展分组后,取出每组的前几条数据

Oracle分组后取每组第一条

sql数据库怎么实现分组并取每组的前1条语句,按日期排序?