Mysql窗口函数
窗口可以理解为记录集合,窗口函数就是在满足某种条件的记录集合上执行的特殊函数。 即:应用在窗口内的函数。
静态窗口:每条记录都要在此窗口内执行函数,窗口大小都是固定的。
动态窗口:不同的记录对应着不同的窗口,这种动态变化的窗口叫滑动窗口。
语法格式:
over()括号内若不写,则意味着窗口函数基于满足where条件的所有行进行计算。
若括号内不为空,则支持以下语法来设置窗口。
1
|
函数名(字段名) over(partition by order by rows between )
|
数据范围:
1
2
3
4
5
6
|
rows between 2 preceding and current row # 取本行和前面两行
rows between unbounded preceding and current row # 取本行和之前所有的行
rows between current row and unbounded following # 取本行和之后所有的行
rows between 3 preceding and 1 following # 从前面三行和下面一行,总共五行
# 当 order by 后面没有 rows between 时,窗口规范默认是取本行和之前所有的行
# 当 order by 和 rows between 都没有时,窗口规范默认是分组下所有行( rows between unbounded preceding and unbounded following)
|