1. 程式人生 > >SQL的四大排名函式

SQL的四大排名函式

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