【SQL】Rank、Dense_Rank、Row_Number用法與範例
Rank() over (Partition by 欄位 Order by 欄位 )
DENSE_RANK() over (Partition by 欄位 Order by 欄位 )
ROW_NUMBER() over (Partition by 欄位 Order by 欄位 )
Partition:分隔。
先做所有的排名當一個臨時table再用臨時table去找前三名。
Rank():當只取前三名時,若第2名重複,結果只會有第1、兩個第2名不會出現第3名。
DENSE_RANK():只取前三名,若遇到重複的名次,還是會完整取到第三名。如上圖結果。
ROW_NUMBER():流水號,就是純排序,也沒有重不重複問題,不管實際名次。