mysql8.0的窗口函数
1.窗口:记录集合
2.静态窗口:窗口大小都是固定的
3.滑动窗口:不同的记录对应着不同的窗口
MySQL支持的窗口函数类型:
- 序号函数:row_number()/rank()/dense_rank()
- 分布函数:percent_rank()/cume_dist()
- 前后函数:lag()/lead()
- 头尾函数:first_val()/last_val()
- 其他函数:nth_value()/nfile()
基本语法:
函数名([expr]) over子句
子句类型:
- partition子句:按字段进行分组
- order by子句:按字段进行排序
- frame子句:frame是当前分区的一个子集,子句用来定义子集的规则,通常用来作为滑动窗口使用
ps:在涉及窗口过多的时候可以通过关键字WINDOW设置窗口别名进行定义
##设置窗口别名
select *,rank() over window_name as idx
from aa
window window_name as (partition by province );
frame子句中用来确定不同动态行记录关键子:
- CURRENT ROW:边界是当前行,一般和其他范围关键字一起使用
- UNBOUNDED PRECEDING:边界是分区中的第一行
- UNBOUNDED FOLLOWING:边界是分区中的最后一行
- expr PRECEDING:边界是当前行减去expr的值
- expr FOLLOWING:边界是当前行加上expr的值
参考文档来源:https://www.cnblogs.com/DataArt/p/9961676.html