搜索
写经验 领红包

mysql窗口函数排序(mysql中ak的用法)

导语:二、mysql窗口函数之rank()函数的使用

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

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

2、什么是窗口函数?

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

3、语法规则:
select 窗口函数名称 over (partition by 分组的列名,order by 排序的列名)as &39;

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

表数据参考

4、实际查询语句:

特别注意:窗口函数是对where和group by子句处理后的结果进行操作,因此按照SQL语句的运行顺序,窗口函数一般放在select子句中,切记!

SELECTid,NAME AS &39;,score AS &39;,class AS &39;,rank() over ( PARTITION BY class ORDER BY score DESC ) AS &39; FROMbackup_csm.`demo`
5、查询结果:

查询结果首先是按照班级class进行分组,分组后组内按照分数score进行desc降序排名排名,如下图。

查询结果

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

同组同分情况

6、结束:

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

本文内容由小媛整理编辑!