前沿拓展:
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()】等,那么,如何解决上面“跳级”问题呢?后面继续分享。
拓展知识:
rank函数
第一,打开需要修改的Exce,第二选择需要修改的数据,输入rank公式即可排序。具体步骤如下:
1、电脑打开Excel表格。
2、电脑打开Excel表格后,在排名中输入公式=RANK(J11,$J$11:J$14),$J$11:J$14是所有成绩单元格的绝对值,选中单元格后按F4就会变成绝对值。
3、输入公式后,就会得到名次,下拉**公式。
4、所有排名就都出来了。
1、**的单元格含公式或链接太多,**粘贴时计算量较大导致计算机卡**。
2、选择**的区域太大,因为部分数据不能体现,导致系统计算更加复杂容易卡**。
原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/27570.html