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的記錄
