窗口移动消息值_SQL第七关之窗口函数
窗⼝移动消息值_SQL第七关之窗⼝函数已经到第七关了,来点更⾼级的东西,就是窗⼝函数:
⼀、定义
窗⼝函数也称为OLAP函数。就是对数据库数据进⾏实时分析处理,像窗⼝这样展⽰出来。
窗⼝函数基本语法:
‹窗⼝函数› over (partition by ‹⽤于分组的列名› order by ‹⽤于排序的列名›)
‹窗⼝函数›的位置,可以分为以下两种:
聚合函数(sum(),avg(),count(),max(),min()...);
专⽤窗⼝函数(rank(),dense_rank(),row_number()...)。
需要注意的是:
1、专⽤窗⼝函数不需要参数,所以可以空着,
2、聚合函数后⾯括号⾥⾯不能为空,需要指定聚合的列名
3、窗⼝函数是对where或者group by⼦句处理后的结果进⾏操作,所以窗⼝函数只能select⼦句中使⽤。补偿金
⼆、分类
1.专⽤窗⼝函数(rank, dense_rank, row_number)
rank, dense_rank, row_number区别对相同值,排序的⽅式不同:
ranking 考虑并列,不连续排名,如:1 2 3 3 5
dense_rank 考虑并列,连续排名,如:1 2 3 3 4
写给语文老师的教师节祝福语row_number 不考虑并列,如:1,2,3,4,5
rank, dense_rank, row_number区别对相同值,排序的⽅式不同土木工程就业方向
2. 聚合函数做窗⼝函数(sum、avg、count、max、min)
(1) 做累计求和、平均值、最⼤和最⼩值,可以看到⼀⾏数据对总体的影响
(2) 加上row … proceed可以做移动平均
聚合函数的使⽤
sum和row … proceed可以做移动平均
3、topN的万能模板:
select * from (select *, row_number() over (partition by 要分组的列名 order by 要排序的列名 desc) as ranking from 表名) as a where ranking ‹= N;
4、partition by和order by功能与group by分组后的对⽐:
partition by和order by功能与group by分组后的对⽐
partition by和order by功能与group by分组后的对⽐春天彩
三、窗⼝函数使⽤场景
1、经典top N问题:出每个部门排名前N的员⼯进⾏奖励
2、经典排名问题:业务需求“在每组内排名”,⽐如:每个部门按业绩来排名
甘南旅游景点3、在每个组⾥⽐较的问题:⽐如查每个组⾥⼤于平均值的数据中国梦我的梦想作文
好了,准备冲刺第8关了,学完就是SQL真正的开始了,加油!!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。