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