【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:分隔。 Partition by區域→北中南東區各有1~若干名次產生,而不是四個區混合排名。 先做所有的排名當一個臨時table再用臨時table去找前三名。 Rank():當只取前三名時,若第2名重複,結果只會有第1、兩個第2名不會出現第3名。 DENSE_RANK():只取前三名,若遇到重複的名次,還是會完整取到第三名。如上圖結果。 ROW_NUMBER():流水號,就是純排序,也沒有重不重複問題,不管實際名次。