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的记录