天天看點

dense_rank()和rank() 視窗函數 mysql

dense_rank()的文法

DENSE_RANK() OVER (
    PARTITION BY <expression>[{,<expression>...}]
    ORDER BY <expression> [ASC|DESC], [{,<expression>...}]
) 
           

在這個文法中:

首先,PARTITION BY子句将FROM子句生成的結果集劃分為分區。DENSE_RANK()函數應用于每個分區。

其次,ORDER BY 子句指定DENSE_RANK()函數操作的每個分區中的行順序。

如果分區具有兩個或更多具有相同排名值的行,則将為這些行中的每一行配置設定相同的排名。

與RANK()函數不同,DENSE_RANK()函數始終傳回連續的排名值。

測試看:

https://www.begtut.com/mysql/mysql-dense_rank-function.html

rank()函數

RANK() OVER (
    PARTITION BY <expression>[{,<expression>...}]
    ORDER BY <expression> [ASC|DESC], [{,<expression>...}]
) 
           

他們之間的差別

dense_rank()和rank() 視窗函數 mysql
  • 一個是連續的,一個不是連續的;

練習鞏固

https://leetcode-cn.com/problems/rank-scores/