MySQL常用排名函数
2021/8/12 8:06:21
本文主要是介绍MySQL常用排名函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MySQL常用的排名函数有:ROW_NUMBER()、DENSE_RANK()、RANK()、NTILE()。
-
ROW_NUMBER()
ROW_NUMBER()函数用于把数据进行排序,每条数据会按照对应的条件要求排序后加上序号
示例:
SELECT ROW_NUMBER() over ( ORDER BY stu_score DESC ) s_rank, stu_name, stu_number, stu_score FROM students_score;
排序是按照分数降序排的,如图所示,即使出现分数相同,也是依次排序,序号是不会重复的。所以ROW_NUMBER()不能用于像学生成绩排名这样的排序要求。 -
DENSE_RANK()
DENSE_RANK()也是排名函数,对字段进行排名,和ROW_NUMBER()的区别,看示例:
示例:
SELECT DENSE_RANK() over ( ORDER BY stu_score DESC ) s_rank, stu_name, stu_number, stu_score FROM students_score;
如图所示DENSE_RANK()和ROW_NUMBER()排名结果都是连续的,但是当出现分数相同时,DENSE_RANK()的排名会出现相同的排名。
-
RANK()
RANK()也是对字段进行排名的函数。和DESNE_RANK()的区别在于,如果出现分数相同的数据时,DESNE_RANK()排名是连续的,RANK()则是跳跃的。
示例:
SELECT RANK() over ( ORDER BY stu_score DESC ) s_rank, stu_name, stu_number, stu_score FROM students_score;
-
NTILE()
NTILE()函数将排序分区中的行划分为特定数量的组。从每个组分配一个从一开始的桶号。对于每一行,NTILE()函数返回一个桶号,表示行所属的组。
语法:
NTILE(n) OVER (
PARTITION BY [{,…}]
ORDER BY [ASC|DESC], [{,…}]
)
-
n是一个字面正整数。桶号的范围是1到n。
-
在PARTITION BY从返回的结果集划分FROM子句为分区到的NTILE()函数被应用。
-
ORDER BY子句指定将NTILE()值分配给分区中的行的顺序。
请注意,如果分区行的数量不能被整除n,则NTILE()函数将生成两个大小的组,差异为1。较大的组总是以ORDER BY子句指定的顺序位于较小的组之前。
另一方面,如果分区行的总数可被整除n,则行将在组之间平均分配。
示例:
SELECT NTILE( 2 ) over ( ORDER BY stu_score DESC ) s_rank, stu_name, stu_number, stu_score FROM students_score;
SELECT NTILE( 3 ) over ( ORDER BY stu_score DESC ) s_rank, stu_name, stu_number, stu_score FROM students_score;
以上就是MySQL常见的几个排名函数,生产中可以根据实际情况选择对应的函数。
这篇关于MySQL常用排名函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南
- 2024-12-07MySQL慢查询入门:快速掌握性能优化技巧
- 2024-12-07MySQL入门:新手必读的简单教程
- 2024-12-07MySQL入门:从零开始学习MySQL数据库
- 2024-12-07MySQL索引入门:新手快速掌握MySQL索引技巧
- 2024-12-06BinLog学习:MySQL数据库BinLog入门教程
- 2024-12-06Binlog学习:MySQL数据库的日志管理入门教程