SQL的四大排名函式
阿新 • • 發佈:2018-11-12
row_number() 根據列為結果集中的行返回有序數字 |
select employeeID,row_number()over (order by salary asc) as Rank from employee | 查詢結果會有一個Rank列,內容是從上到下1,2,3,4..... |
rank() 根據指定條件在結果集中返回每一行的排名 |
select employeeID,rank()over (order by salary asc) as Rank from employee | 查詢結果會有一個Rank列,內容是從上到下1,2,3,3,5,6.. |
dense_rank() 根據指定條件給出連續排名值得情況 |
select employeeID,dense_rank()over (order by salary asc) as Rank from employee | 查詢結果會有一個Rank列,內容是從上到下1,2,3,3,4,5,6..... |
ntile() 將結果集劃分為特定數量的組 |
select employeeID,ntile(4)over (order by salary asc) as Rank from employee | 將記錄平均分為四組,第一組的rank列全為1,1,.. |
附加:dense_rank()也可以實現分組排序,先分組,然後進行分組排序,但要藉助PARTITION BY
select employeeID,dense_rank()over (PARTITION BY managerID order by salary asc) as Rank from employee where managerID is not null