mysql-排名函数

文章介绍了MySQL8中三种排名函数的使用:RANK会产生跳跃的排名,DENSE_RANK保持连续排名不跳过相同分数的名次,而ROW_NUMBER则对每个值赋予唯一序列号,即使值相同。这些函数在数据分析和查询中非常有用。
摘要由CSDN通过智能技术生成

mysql8支持的几种排名函数,RANK、DENSE_RANK和ROW_NUMBER,但是8之前的版本还不支持,想要实现排名还得使用:=(赋值)、@(标识用户变量【读取、使用】)组合实现。

RANK、DENSE_RANK、ROW_NUMBER使用

首先创建如下数据表:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ioSr6LFw-1681629379941)(/upload/2021/12/image-ce9bc18a89e04cdf96e781ce8cfce064.png)]

  • RANK并列跳跃排名:排名会有间断,比如90、90、88、80排名就是1、1、3、4
    SELECT score,
    RANK() OVER(ORDER BY score DESC) rank_no
    FROM scores;
    
    结果:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h8wsu3Aq-1681629379942)(/upload/2021/12/image-59fc62d0cf3f499893d75ee9c2b796d0.png)]
  • DENSE_RANK并列连续排序:并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,依然按照连续数字排名,比如90、90、88、80排名就是1、1、2、3
    SELECT score,
    DENSE_RANK() OVER(ORDER BY score DESC) rank_no
    FROM scores;
    

结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PVFYCmY7-1681629379942)(/upload/2021/12/image-d65a880b07894609853776490b4ca8ee.png)]

  • ROW_NUMBER连续排名:即使相同的值,依旧按照连续数字进行排名,比如90、90、88、80排名就是1、2、3、4
SELECT score,
ROW_NUMBER() OVER(ORDER BY score DESC) rank_no
FROM scores;

结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-awM9Pazy-1681629379942)(/upload/2021/12/image-399f7a7b321445f58e41f92e39aa81d1.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值