MySQL四大排名函数

MySQL四大排名函数

用于测试的表
请添加图片描述

Row_Number()

-- 排序分数,并显示排名
SELECT score,ROW_NUMBER() OVER(order By score desc)as `row_number` FROM `order_function_test`

执行结果
请添加图片描述
由结果可见Row_Number()这个函数就是普通的按照行数来显示

Rank()

SELECT score ,RANK() OVER(order By score desc)as `row_number` FROM `order_function_test`;

执行结果请添加图片描述
可见Rank()函数会考虑相同的数据,赋予相同的排名,之后就会直接跳过,例如两个第一,下来就是第三,不会赋值第二

dense_rank()

SELECT score ,DENSE_RANK() OVER(order By score desc)as `row_number` FROM `order_function_test`;

执行结果
请添加图片描述

dense_rank()相比较与rank(),会发现排名是连续的,即两个第一之后是第二,而rank()会变成第三

ntile()

NTILE(n),用于将分组数据按照顺序切分成n片,返回当前切片值。将一个有序的数据集划分为多个桶(bucket),并为每行分配一个适当的桶数(切片值,第几个切片,第几个分区等概念)。它可用于将数据划分为相等的小切片,为每一行分配该小切片的数字序号

-- 切成3组,返回组号
SELECT score ,ntile(3)	 OVER(order By score desc)as `row_number` FROM `order_function_test`;

执行结果
请添加图片描述
将数据分成了三组,如果切片不均匀默认添加第一分组的数据量,主要用于统计出前几分之几的数据

总结

以上就是4中排序函数应用,主要区别就是按照需求来使用,有的排名连续,有的不连续,ntile()更注重分组效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踢足球的程序员·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值