一、窗口函数
什么是窗口函数:OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理
1.专用窗口函数,包括后面要讲到的rank, dense_rank, row_number等专用窗口函数
2.聚合函数,如sum. avg, count, max, min等
使用窗口函数的情况:需要每组内排名时,兼具分组和排序的功能,例如topN
如何书写窗口函数:‹窗口函数› over (partition by ‹用于分组的列名› order by ‹用于排序的列名›)
窗口函数在SQL中的位置:是对where或者group by子句处理后的结果进行操作,所以窗口函数原则上只能写在select子句中
二、窗口函数的应用
1.专用窗口函数rank,排序函数,不同于 group by分组,rank 不改变分组之后的数据行数,group by汇总后改变了表的行数,一行只有一个类别
在school中创建以下班级表
![cbb07e88be5a2f24c5c426456e3efb2d.png](https://img-blog.csdnimg.cn/img_convert/cbb07e88be5a2f24c5c426456e3efb2d.png)
①.对班级表,按每个班级内按成绩排名,先按班级排序,再按成绩排序(使用窗口函数)
分析:partition by (这里是窗口函数的窗口&#