rank函数(rank函数不连续单元格排名)

前沿拓展:

rank函数

排名次是对固定范围排序,所以需要用绝对引用固定范围,不然下拉公式会导致范科:RANK函数)


1、窗口函数之rank()使用场景:

在mysql中进行分组(group by)后,还需要组内排名,例如各班级成绩排名、市场各不同小组业绩排名、不同地区水果售价排名等。

2、什么是窗口函数?

窗口函数,也叫OLAP函数(Online **lytical Processing),即联机分析处理,可以对数据库数据进行实时分析处理。

3、语法规则:select 窗口函数名称 over (partition by 分组的列名,order by 排序的列名)as '你想取的名字'

数据库中表demo的数据如下:

rank函数(rank函数不连续单元格排名)

表数据参考

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降序排名排名,如下图。

rank函数(rank函数不连续单元格排名)

查询结果

特别注意:如果分数相同,排名会有跳级,假设上面数据同组张三的分数也为90分,那么他将和姓名为“安一”的并列为第一名,如下图。

rank函数(rank函数不连续单元格排名)

同组同分情况

6、结束:

窗口函数当然不止这一个函数,还有很多其他函数,例如还有聚合函数【max(),min()】,取值函数【first_value(),nth_value()】等,那么,如何解决上面“跳级”问题呢?后面继续分享。

拓展知识:

原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/31765.html