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中窗口函数总结_第1张图片
班级内排名,得到每个学号在自己班级排名
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 班级表
sql中窗口函数总结_第2张图片
为什么叫窗口函数,窗口表示范围
用途:分组和排序同时不减少原表的函数

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

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

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

你可能感兴趣的:(sql)