Oracle分組查詢取每組排序后的前N條記錄


目的:取每組數據排序后的前N條數據。

關鍵函數:OVER(PARTITION BY)

 

舉例:存在實驗表 test1 表中存在三列:  姓名(name)、性別(sex)、年齡(age),

數據有 男性和女性20、30、40歲,共6人, 要查詢出男性年齡最大的2人和女性年齡最大的兩人。

sql語句如下:

select *
  from (select a.name,
               a.sex,
               a.age,
               ROW_NUMBER() OVER(partition by a.sex order by a.age desc) row_num
          from test1 a)
 where row_num <= 2

按照性別分組並按年齡倒序排序作為序號row_num,  row_num<=2即為最大的兩人,sql語句執行后結果為4條數據:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM