目录

【数据库】窗口函数介绍

前言

文章改编自CSDN博客,完整内容见:MYSQL操作实战-窗口函数

窗口函数分类

/sql/sql-win.png

窗口:记录集合

窗口函数:在满足某些条件的记录集合上执行的特殊函数,对于每条记录都要在此窗口内执行函数。有的函数随着记录的不同,窗口大小都是固定的,称为静态窗口;有的函数则相反,不同的记录对应着不同的窗口,称为滑动窗口

窗口函数和普通聚合函数的区别

  • 聚合函数是将多条记录聚合为一条;窗口函数是每条记录都会执行,有几条记录执行完还是几条。

  • 聚合函数也可以用于窗口函数。

窗口函数的基本用法

使用窗口函数的方法是:函数名 OVER 子句

over关键字用来指定函数执行的窗口范围,若后面括号中什么都不写,则意味着窗口包含满足WHERE条件的所有行,窗口函数基于所有行进行计算;如果不为空,则支持以下4种语法来设置窗口:

  • WINDOW name AS window:给窗口指定一个别名。如果SQL中涉及的窗口较多,采用别名可以看起来更清晰易读;
  • PARTITION BY子句:窗口按照哪些字段进行分组,窗口函数在不同的分组上分别执行;
  • ORDER BY子句:按照哪些字段进行排序,窗口函数将按照排序后的记录顺序进行编号;
  • FRAME子句:FRAME是当前分区的一个子集,子句用来定义子集的规则,通常用来作为滑动窗口使用。