前沿拓展:
rank函数
排名次是对固定范围排序,所以需要用绝对引用固定范围,不然下拉公式会导致范科:RANK函数)
1、窗口函数之rank()使用场景:
在mysql中进行分组(group by)后,还需要组内排名,例如各班级成绩排名、市场各不同小组业绩排名、不同地区水果售价排名等。
2、什么是窗口函数?
窗口函数,也叫OLAP函数(Online **lytical Processing),即联机分析处理,可以对数据库数据进行实时分析处理。
3、语法规则:select 窗口函数名称 over (partition by 分组的列名,order by 排序的列名)as '你想取的名字'
数据库中表demo的数据如下:
表数据参考
4、实际查询语句:
特别注意:窗口函数是对where和group by子句处理后的结果进行**作,因此按照SQL语句的运行顺序,窗口函数一般放在select子句中,切记!
SELECT
id,
NAME AS '姓名',
score AS '分数',
class AS '班级',
rank() over ( PARTITION BY class ORDER BY score DESC ) AS '班级名次'
FROM
backup_c**.`demo`5、查询结果:
查询结果第一是按照班级class进行分组,分组后组内按照分数score进行desc降序排名排名,如下图。
查询结果
特别注意:如果分数相同,排名会有跳级,假设上面数据同组张三的分数也为90分,那么他将和姓名为“安一”的并列为第一名,如下图。
同组同分情况
6、结束:
窗口函数当然不止这一个函数,还有很多其他函数,例如还有聚合函数【max(),min()】,取值函数【first_value(),nth_value()】等,那么,如何解决上面“跳级”问题呢?后面继续分享。
拓展知识:
原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/31765.html