oracle三個排序函數的聯系與區別-ROW_NUMBER() 、RANK()、DENSKRANK ()


三個排序函數的區別(簡單版)

1.ROW_NUMBER

2.RANK

3.DENSKRANK 

這三個函數都是依托窗口函數進行的分組后的排序,對於排序的特點有些細節的區別

 

現有product表數據如下

1. ROW_NUMBER() 就是簡單地按照Partition by要分組的字段排序,若order by后的字段值相同會區分出大小(原則不詳),整體來說是的由1到N的排序

select t.*,row_number() over (partition by product_type order by sale_price) from product t

2.Rank()相同合為一,跳躍排序。如果三個人,由兩個人相同,則會顯示1,2,2,4

select t.*,rank() over (partition by product_type order by sale_price) from product t

3.DENSE_RANK相同為合一,連續排序。如果三個人中有兩個相同,則會顯示1,2,2,3

select t.*,dense_rank() over (partition by product_type order by sale_price) from product t

 


免責聲明!

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



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