SQL OVER子句
SQL最高级的特性之一是OVER子句。这个特性允许我们对给定结果集中的特定行子集执行计算并应用SQL窗口函数。
当您需要计算行组的聚合或排名而不实际折叠整个结果集时,它特别有用。
在本教程中加入我们,我们将学习有关开始使用OVER子句的所有知识。
要求:
在我们深入了解OVER子句的功能和工作方式之前,请确保您已经掌握了SQL的基础知识。我们还假设您可以访问一个数据库,您可以使用它来测试您的知识。
在本例中,我们将使用MySQL数据库和Sakila示例数据库。只需确保您有足够的权限,并且您的数据库引擎支持窗口函数。
语法:
正如我们前面提到的,在大多数情况下,我们主要将OVER子句与窗口函数结合使用。
因此,我们可以将子句的语法表示如下:
(表情)OVER (
[PARTITION BY partition_expression,…]
[ORDER BY sort_expression [ASC | DESC],…]
(frame_specification)
)
在给定的语法中,我们可以将每个组件分解如下:
- -它指的是我们希望应用于特定行窗口的窗口函数,如SUM(), AVG(), ROW_NUMBER(), RANK等。
- 表达式——指定应用窗口函数的列或表达式。
- PARTITION BY——这是一个可选的子句,它将结果集划分为多个分区,每个分区就像应用函数的单独单元。同一分区内的行在指定列中共享相同的值。
- ORDER BY——指定处理每个分区中的行的顺序。
- frame_specification – This is an optional clause that defines the frame of rows within the partition. Common frame specifications include ROWS BETWEEN AND or RANGE BETWEEN AND