1、窗口函数格式:
<窗口函数> OVER ( PARTITION BY <用于分组得列> ORDER BY <用于排序的列> DESC)
2、窗口函数:
--专用窗口接口函数:
RANK:1,2,3,3,3,6,7,8
DENSE_RANK:1,2,3,3,3,4,5,6
ROW_NUMBER:1,2,3,4,5,6,7,8
NTILE:分组排名,里面的数字是几,最多排名就是几,里面的数字是4,最多的排名就是4
--聚合函数:SUM、AVG、MAX、MIN、COUNT
3、实例:
SELECT * , RANK() OVER (PARTITION BY 班级 ORDER BY 成绩) AS ranking FROM 班级表
说明:
新增的ranking是在原表的基础上加入新的列,虽然直接通过group by 和order by 聚合函数也可获得同样的排名,但是聚合后的函数会生成一个新的表结构。因此在原表基础上添加新的属性,可通过窗口函数实现。
另PARTITION BY 并非必须,看自己需求