开窗函数
- 简单理解,就是对查询的结果多出一列,这一列可以是聚合值,也可以是排序值。
- 开窗函数一般就是说的是over()函数,其窗口是由一个 OVER 子句 定义的多行记录
- 开窗函数一般分为两类,聚合开窗函数和排序开窗函数。
简单来说,窗口函数有以下功能:
1)同时具有分组和排序的功能
2)不减少原表的行数
3)语法如下:
<窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名> [rows between ?? and]
select 函数(参数) over([partition by colname] [order by colname] [ROWS Control])
from tableName
ROWS Control 是用来控制窗口的
常用的组合如下:
| --ROWS BETWEEN x PRECEDING AND y FOLLOWING
当前行和前面x行以及后面y行构成窗口进行计算
| --ROWS BETWEEN x PRECEDING AND CURRENT ROW
当前行和前面x行构成窗口进行计算
| --ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
当前行和前面所有行进行计算 不会超过自己的窗口大小
排序开窗
- row_number() over() --123
- rank() over() --113
- dense_rank() over() --112
聚合开窗
sum() over()
avg() over()
max() over()
min() over()
count() over()