目录
窗口函数
什么是窗口函数
窗口函数的语法
< 窗口函数 > OVER ([ PARTITION BY < 列清单 >]
ORDER BY < 排序用列清单 >)
① 能够作为窗口函数的聚合函数( SUM 、 AVG 、 COUNT 、 MAX 、 MIN )
② RANK 、 DENSE _ RANK 、 ROW _ NUMBER 等专用窗口函数
语法的基本使用方法——使用 RANK 函数
专用窗口函数的种类
RANK 函数
计算排序时,如果存在相同位次的记录,则会跳过之后的位次。
例)有 3 条记录排在第 1 位时:1 位、1 位、1 位、4 位……
DENSE_RANK 函数
同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次。
例)有 3 条记录排在第 1 位时:1 位、1 位、1 位、2 位……
ROW_NUMBER 函数
赋予唯一的连续位次。
例)有 3 条记录排在第 1 位时:1 位、2 位、3 位、4 位……
ps:(专用窗口函数无需参数,因此通常括号中都是空的,原则上窗口函数只能在 SELECT 子句中使用,在 SELECT 子句之外“使用窗口函数是没有意义的”)
计算移动平均
两个 ORDER BY
- 使用窗口函数时必须要在 OVER 子句中使用ORDER BY , OVER 子句中的 ORDER BY 只是用来决定窗口函数按照什么样的顺序进行计算的,对结果的排列顺序并没有影响将聚合函数作为窗口函数使用时,会以当前记录为基准来决定汇总对象的记录。