窗口函数介绍
1 窗口函数语法
<窗口函数> over (partition by <用于分组的列名>
order by <用于排序的列名>)
专用窗口函数,比如rank,dense_rank,row_number等
聚合函数,如sum,avg,count,max,min等
2 窗口函数功能
不减少原表的行数,所以经常用来在每组内排名
同时具有分组(partition by)和排序(order by)的功能
3 窗口函数使用场景
业务需求“在每组内排名”,比如:
排名问题:每个部门按业绩来排名
topN问题:找出每个部门排名前N的员工进行奖励
4 注意事项
窗口函数原则上只能写在select子句中
partition by 子句可以省略,省略就是不指定分组,但是这就失去了窗口函数的功能,所以一般不要这么使用
5 group by、order by 子句与窗口函数的区别
group by 分组汇总后改变了表的行数,一行只有一个类别,而partition by和rank函数不会减少原表中的行数