SQL 窗口函数解释指南


在使用 SQL Server 数据库时,用户在表行中执行任何类型的计算时主要面临挑战。这里对SQL窗口函数进行了说明,方便用户理解和方便计算。

让我们首先了解什么是 SQL 窗口函数以及它对用户有何好处。

什么是 SQL Server 窗口函数? 

SQL 窗口函数是 SQL 数据库中的重要工具,用于在 SQL 表行中执行高级计算。因此,这些函数的执行主要针对 SQL 表中的特定行集或行“窗口”。此外,该功能还可以帮助用户更好地记录和分析表数据中的数据。因此,在窗口函数的帮助下,用户可以执行求和、平均值、最小值、最大值等多种运算。此外,在 SQL 中使用窗口函数还有许多其他好处。让我们来看看SQL窗口函数的特点和好处的解释。

维护数据完整性的专业工具

在我们继续了解详细的窗口函数及其特性之前,还有更多内容。 SQL 窗口函数在某些情况下可能会变得相当复杂。因此,数据损坏、意外删除、数据丢失等现象相当普遍。SQL恢复工具是一个一体化向导,提供先进的解决方案来消除此类核心技术错误。此外,DBCC CHECKDB 命令也可以很好地工作,但并非所有用户都愿意深入了解 SQL 技术细节。现在就提前下载该软件,为任何灾难性情况做好准备。

实施

SQL Server窗口函数的执行分为四个阶段。因此,四个阶段的实现一一进行,以便在 SQL 数据集上更有效地执行函数。这里解释了 SQL 窗口函数的各个阶段。

  • 数据获取:函数实现的第一阶段涉及数据的获取和检索。用户可以使用数据集中的 FROM 和 WHERE 子句检索数据。
  • 数据集分区:接下来,完成数据集的分区。因此,借助 PARTITION BY 子句,用户可以将数据集行划分为不同的组和分区。
  • 数据集排序:ORDER BY 子句用于按特定类别或用户希望对数据进行排序的任何因素对整个数据集进行排序。
  • 窗口函数实现:最后阶段涉及根据用户的要求在数据集上执行窗口函数。

这就是SQL窗口函数执行的理论解释。现在让我们转向 SQL 查询,了解 SQL Server 中窗口函数的实际实现。

另请阅读:如何专业修复 MS SQL Server 错误 15105。

SQL SERVER 窗口函数查询实现

SQL Server 中窗口函数的语法为:

SELECT column1, 
window_function(column2)
OVER([PARTITION BY column1] [ORDER BY column3]) AS newcolumn
FROM table_name;

此语法解释了用户如何选择一列,然后在此基础上对其他列进行分区,然后对所需列应用窗口函数。此外,用户可以根据自己的要求按升序或降序对行进行排序。此外,函数实现后,表中将添加一个新列作为结果列。

以下是语法中子句的解释:

  • 窗口功能:用户希望实现的功能。
  • 第一栏:将选择的列。
  • 第2栏:将应用窗函数的列。
  • 第3栏:已完成分区基础的列。
  • 新栏:函数执行后将显示的结果列
  • 表名:正在其中执行整个过程的表的名称。

现在以其他示例来实现 SQL Server 中的不同窗口函数。

从第一种类型开始,聚合函数。

阅读更多:桌面窗口管理器 dwm.exe Windows 11 上的高 CPU

#1 聚合窗口函数

SQL Server 中的聚合窗口函数有助于执行求和、平均值和其他类似函数等操作。我们来看看函数的实现。

句法平均窗函数为:

SELECT Column1, Column2, Column3,
AVG(Column2)OVER(PARTITION BY Column1) AS AVG_Column2
From Tablename

[在这里您可以根据您的喜好和您正在使用的表数据添加表名称和列名称]

SQL中的聚合窗口函数可以帮助用户进行平均、求和、最小值、最大值等操作。因此,在表中执行窗口函数后,用户将在原表中得到一个结果列。此外,此语法仅适用于数据集特定表中的 AVG 函数。现在让我们继续解释其他 SQL 窗口函数操作。

#2 SUM() 函数

然后,为了在 SQL Server 中使用 SUM 窗口函数,用户必须遵循给定的语法。

SELECT
Column_name1,
Column_name2,
Column_name3,
SUM(Column_name3) OVER(PARTITION BY Column_name1) AS total_sum
FROM table_name;

#3 MIN() 函数

此外,要查找表行中的最小值,此窗口函数很有用。

SELECT
Column_name1,
Column_name2,
MIN(Column_name1) OVER(PARTITION BY Column_name2) AS min_value
FROM table_name;

#4 MAX() 函数

同样,借助此函数,用户可以找到行窗口的最大值或数据集中的行分区。

SELECT
Column_name1,
Column_name2,
Column_name3,
Column_name4,
MAX(Column_name2) OVER(PARTITION BY Column_name4) AS max_value
FROM table_name;

#5 Rank() 窗口函数

此功能提供表中行的排名。使用 Rank() 函数的语法如下:

SELECT 
ROW_NUMBER() OVER(PARTITION BY Column1 ORDER BY Column2 ASC/DESC) AS Column2,
Column3,
Column4,
RANK() OVER(PARTITION BY Column1 ORDER BY Column2) AS Column5,
DENSE_RANK() OVER(PARTITION BY Column1 ORDER BY Column2) AS Column6
FROM table_name;

这里使用的术语是:

排名() –这里的排名表示表的每个分区中存在的所有行的排名。

ROW_NUMBER() –语法中的 ROW_NUMBER() 为行提供唯一的编号。

DENSE_RANK() –这里的 DENSE_RANK() 表示数据集特定分区中每行的行号。

[在这里根据您的要求更改表名称、列名称和其他所需数据]

因此,借助这些命令,用户可以对表中的指定行进行排名,并查找表的第一个和最后一个值等。

结论

在本文的帮助下,我们了解了窗函数的概念。通过解释 SQL 窗口函数,我们还讨论了这些函数是如何实现的以及它们是如何工作的。此外,我们还提供了语法,以便用户理解和执行该过程。