MySQL DENSE_RANK函数简介

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(),有空的时候再写一篇比较比较区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值