11.11 窗口函数
MySQL从8.0版本开始支持窗口函数,其中,窗口可以理解为数据的集合。窗口函数也就是在符合某种条件或者某些条件的记录集合中执行的函数,窗口函数会在每条记录上执行。窗口函数可以分为静态窗口函数和动态窗口函数,其中,静态窗口函数的窗口大小是固定的,不会因为记录的不同而不同;动态窗口函数的窗口大小会随着记录的不同而变化。
窗口函数总体上可以分为序号函数、分布函数、前后函数、首尾函数和其他函数,如表11-5所示。
表11-5 MySQL窗口函数分类
![](https://i-blog.csdnimg.cn/blog_migrate/59a513555c17151088ef142eae5f4cdf.jpeg)
窗口函数的基本用法格式如下:
函数名 ([expr]) over子句
over关键字指定函数窗口的范围,如果省略后面括号中的内容,则窗口会包含满足WHERE条件的所有记录,窗口函数会基于所有满足WHERE条件的记录进行计算。如果over关键字后面的括号不为空,则可以使用如下语法设置窗口。
·window_name:为窗口设置一个别名,用来标识窗口。
·PARTITION BY子句:指定窗口函数按照哪些字段进行分组。分组后,窗口函数可以在每个分组中分别执行。
·ORDER BY子句:指定窗口函数按照哪些字段进