sql中窗口函数总结

窗口函数用处:
排名:每个部门按业绩排名;TOPN:找出每个部门前N的员工

什么是窗口函数:
叫OLAP(online anallytical processing)联机分析处理

基本语法:
<窗口函数> over (partition by <分组的列名> order by <排序的列名>)
<窗口函数>包含两种函数:
1.专用:rank, dense_rank, row_number
2.聚合:min,max,sum,avg
窗口函数原则上写在Select子句中
使用:rank 班级表
在这里插入图片描述
班级内排名,得到每个学号在自己班级排名
sql代码:
select *,rank() over (partition by 班级 order by 成绩 desc)as ranking from 班级表
理解:①班级内按照班级分组 partition by 用来对表分组②按成绩排名,默认升序

partition和group by区别:
group by分组汇总后改变了表的行数,一行只有一个类别,而partition by 和rank 函数不会减少表中的行数。
select 班级,count(学号)over (partition by 班级 order by 班级) as current_count from 班级表
在这里插入图片描述
为什么叫窗口函数,窗口表示范围
用途:分组和排序同时不减少原表的函数

其他窗口函数
dense_rank,row_number,rank的区别
dense_rank:122334
row_number: 123456
rank:122446
注意rank() 后面的括号里面不能为空

聚合函数作为窗口函数:
sum(成绩),avg(成绩),count(成绩)
聚合函数sum在窗口函数中,,是对自身技术,及位于自身记录以上的数据进行求和的结果。
用处:聚合函数作为窗口函数,可以在每一行的数据中直观看到,截止到本行的数据,统计数据时多少,同时尅看出每行数据对于整体数据的影响。

partition by 可以省略,省略就是不指定分组,但是这样就失去了窗口函数的功能。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值