Oracle分组取前三


Oracle分组取前三

ROW_NUMBER() OVER函数的基本用法

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

从1开始,为每一条分组记录返回一个数字,相当于ROW_NUM一样的东西,之后再取最小的几个

ORDER BY是先把列进行排序,排序之后为每条记录返回一个序号。


SELECT * FROM (
    SELECT M.ID,M.NUM,M.INST_NO,ROW_NUMBER()OVER(PARTITION BY M.INST_NO ORDER BY M.NUM desc) E
    FROM MK_MON_EN M)
T WHERE T.E <= 2

 



MK_MON_EN 表取别名M,根据M.NUM进行降序排列,ROW_NUMBER()对所有记录添加一个序号,子查询取出全部结果,外层查询取出子查询中序号小于2的记录


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM