一、窗口函数
1、窗口函数的函义和作用
窗口函数也称为OLAP函数,可以对数据库数据进行实时分析处理;可以处理如下问题:
- 排名问题:每个部门按业绩来排名
- topN问题:找出每个部门排名前N的员工进行奖励
2、基本语法
<窗口函数>的位置可以放以下两种函数:
- 专用窗口函数,包括rank,dense_rank,row_number等
- 聚合函数,如sum,avg,count,max,min等
因为窗口函数是对where或group by 子句处理后的结果进行操作,所以窗口函数原则上只能写在select 子名中。
3、窗口函数的功能:
- 同时具有分组和排序的功能
- 不减少原表的行数
4、专用窗口函数(rank,dense_rank,row_number)
以rank为例:对表中每个班级的成绩进行排名
- partition by 用来对表分组,partition子句省略表示不指定分组。(group by 分组汇总改变行数;partition by 分组汇总行数不变)
- order by 对分组后的结果进行排序
- 专用函数后面的()不需要任何参数
rank,dense_rank,row_number的区别