mysql8.0的窗口函数

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

猜你喜欢

转载自blog.csdn.net/weixin_44375561/article/details/121162586