MySQL学习笔记:排名函数的用法比较
MySQL学习了有一段时间了,为了巩固学习成果,在网上找了些练习题做一做,其中一道题目与排名有关,因为不了解排名相关的函数,所以在网上搜寻一番,看到说MySQL没有rank()函数,遂吭哧吭哧找来了变量方法照葫芦画瓢进行排序。 但是这种方法到底是太过复杂,秉持着“常用的功能肯定早有前辈想到了最简单的方法”这种信条,到底让我找到了排名函数的相关用法(这里想说的是,虽说学习过程中自己钻研很重要,但是高效率解决问题也同样重要)。当然最重要的还要感谢前辈们的总结,我权且作为一个搬运工,此处仅为学习过程留个注脚,不严谨之处还请指出。 原始数据为一张分数表,SId,CId,score分别代表学生序号、课程序号和成绩,这里要对成绩进行排名。 三种窗口函数分别为: ①rank() over(排序规则) ②row_number() over(排序规则) ③dense_rank() over(排序规则) 代码为:
结果为: 很明显,根据结果可以看出: ①rank() over(排序规则):序列中出现相同的数值时排名相同,下一数值排名进行跳级; ②row_number() over(排序规则):无论序列中是否出现相同数值,排序顺次向下(私以为可以理解为计数) ③dense_rank() over(排序规则): 序列中出现相同的数值时排名相同,下一数值排名顺次向下,不进行跳级 注:除上述内容外MySQL 排序,row_number() over(partition by col1 order by col2)可以先对col1字段进行分组,再对col2进行分组,实现多重分组 (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |