SQL OVER子句

SQL最高级的特性之一是OVER子句。这个特性允许我们对给定结果集中的特定行子集执行计算并应用SQL窗口函数。

当您需要计算行组的聚合或排名而不实际折叠整个结果集时,它特别有用。

在本教程中加入我们,我们将学习有关开始使用OVER子句的所有知识。

要求:

在我们深入了解OVER子句的功能和工作方式之前,请确保您已经掌握了SQL的基础知识。我们还假设您可以访问一个数据库,您可以使用它来测试您的知识。

在本例中,我们将使用MySQL数据库和Sakila示例数据库。只需确保您有足够的权限,并且您的数据库引擎支持窗口函数。

语法:

正如我们前面提到的,在大多数情况下,我们主要将OVER子句与窗口函数结合使用。

因此,我们可以将子句的语法表示如下:

(表情)OVER (

[PARTITION BY partition_expression,…]

 

[ORDER BY sort_expression [ASC | DESC],…]

(frame_specification)

在给定的语法中,我们可以将每个组件分解如下:

  1. -它指的是我们希望应用于特定行窗口的窗口函数,如SUM(), AVG(), ROW_NUMBER(), RANK等。
  2. 表达式——指定应用窗口函数的列或表达式。
  3. PARTITION BY——这是一个可选的子句,它将结果集划分为多个分区,每个分区就像应用函数的单独单元。同一分区内的行在指定列中共享相同的值。
  4. ORDER BY——指定处理每个分区中的行的顺序。
  5. 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