天天看點

MySQL - 排序函數 Rank() Over()、Dense_rank() Over()、Row_number() Over()

Rank() Over()

rank() over(partition by subject order by score desc) rank      

查出指定條件後進行排名。特點是,加入是對學生排名,使用這個函數,成績相同的兩名是并列,下一位同學空出所占的名次。

MySQL - 排序函數 Rank() Over()、Dense_rank() Over()、Row_number() Over()

Dense_rank() Over()

dense_rank() over(partition by subject order by score desc) rank      

與rank() over的差別是,兩名學生的成績并列以後,下一位同學并不空出所占的名次。

MySQL - 排序函數 Rank() Over()、Dense_rank() Over()、Row_number() Over()

Row_number() Over()

row_number() over(partition by subject order by score desc) rank      

總結

  • ROW_NUMBER:1,2,3,4……
  • RANK:1,2,2,4……
  • DENSE_RANK:1,2,2,3……
  • 其實 DENSE 這個單詞就暴露了它的特征:稠密的、緊湊的