首页 > 数据库 >【mysql】 窗口函数

【mysql】 窗口函数

时间:2022-11-04 23:55:09浏览次数:45  
标签:rows 窗口 函数 preceding mysql between row

背景

  1. MySQL从8.0开始支持开窗函数,这个功能在大多商业数据库中早已支持,也叫分析函数。
  2. 窗口函数分为静态窗口和滑动窗口,静态窗口的大小是固定的,滑动窗口的大小可以根据设置进行变化,在当前窗口下生成子窗口。

语法

函数名([参数])  
over(
partition by [分组字段] 
order by [排序字段] asc/desc 
rows/range between 起始位置 and 结束位置
)
  • 函数名称,开窗函数的数量较少,只有11个窗口函数(rank, dense_rank, row_number)+聚合函数(sum. avg, count, max, min)
  • over语句,over()是必须要写的,里面有三个参数,都是非必须参数,根据需求选写
    • 第一个参数是 partition by +分组字段,将数据根据此字段分成多份,如果不加partition by参数,那会把整个数据当做一个窗口。
    • 第二个参数是 order by +排序字段,每个窗口的数据要不要进行排序。
    • 第三个参数 rows/range between start and end,这个参数仅针对滑动窗口函数有用,是在当前窗口下分出更小的子窗口。
      起始位置和结束位置可写:

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 current row # 包括本行和前面三行
rows between 3 preceding and 1 following # 从前面三行和下面一行,总共五行
当order by后面缺少窗口从句条件,窗口规范默认是rows between unbounded preceding and current row.
当order by和窗口从句都缺失, 窗口规范默认是 rows between unbounded preceding and unbounded following

标签:rows,窗口,函数,preceding,mysql,between,row
From: https://www.cnblogs.com/xiaoyu-jane/p/16859477.html

相关文章