oracle 和 mysql 排序 rank(),dense_rank()

mysql 的rank可以參考這篇博文https://blog.csdn.net/justry_deng/article/details/80597916

 

oracle 的rank(),dense_rank()

這2個函數使用方式基本一致,下面舉例說明:

表test_user數據如下:

 

  rank() 非連續排序,如果有分數相同的,下一個排序等級會跳過對應的數量,如下:

select tu.*,rank() OVER(ORDER BY score) rank FROM test_user tu;

 

 

dense_rank()連續排序,如果分數相同,下一個等級連續排序,不會跳過,具體如下:

select tu.*,dense_rank() OVER(ORDER BY score) rank FROM test_user tu;

 

擴展:按科目 分類排序:

select tu.*,dense_rank() OVER(PARTITION BY sub_name ORDER BY score) rank FROM test_user tu;

PARTITION BY  分區,也可以以多個條件作爲分區前提

select tu.*,dense_rank() OVER(PARTITION BY sub_name,name ORDER BY score) rank FROM test_user tu;

 

 

發佈了41 篇原創文章 · 獲贊 10 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章