一、窗口函数有什么作用?
- 需要在组内进行排名时,如每个部门按照业绩进行排名(排名问题),找出每个部门排名前N的员工进行奖励
二、什么是窗口函数?
- 窗口函数:又称为OLAP函数,可以对数据库数据进行实时分析处理。窗口函数的基本语法如下:<窗口函数> Over (partition by <用于分组的列名> oder by <用于排列的列名>)
- 在窗口函数的位置可以放哪些函数?
- 1、专用函数,例如rank,dense_rank,row_number
- 2、聚合函数,如sum,avg,count,max,min等
注:由于窗口函数时对where或者group by字句处理结果进行操作,所以窗口函数原则上都是写在select字句中
三、专用函数作为窗口函数
a.下面结合实例给大家介绍一下窗口函数。对每个班级内的成绩实现以下图形的排名,排名方式有以下三种
- dense_rank分数相同的排名相同,且排列连续,如1,1,2,3
- rank分数相同的排名相同且排名不连续,如1,1,3,4
- row_number分数相同排名不相同,如1,2,3,4
- 注:group by 与窗口函数中的patition by有什么区别?group by 得到的行数会变,而在窗口函数中使用partition by得到的行数不会变
b.以下三种方式的sql代码以及得出的结果,自己动手赶紧试试吧