MySQL DENSE_RANK函数简介
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()函数始终返回连续的排名值。
还是有点绕,看看示例:
SELECT
number1,
DENSE_RANK() OVER (
ORDER BY number1
) my_rank
FROM
dense_rank_test
结果:
分组
SELECT
id,
number,
DENSE_RANK() OVER (
PARTITION BY id
ORDER BY number DESC
) number
FROM
number_test
类似的还有RANK()函数,row_number(),有空的时候再写一篇比较比较区别