SQL Server SUM() 函数

17 Mar 2025 | 4 分钟阅读

SQL Server 中的 SUM() 函数是一种聚合函数。我们使用此函数来计算指定列或表达式的一组值的总和

它是一个内置函数,接受单个参数,该参数可以是列或有效表达式,并返回单个结果以总结输入数据集。此函数忽略 NULL 值。但是,当结果集没有任何行时,它将返回 NULL。它也可以与 WHERE、GROUP BY、ORDER BY 和 HAVING 子句一起使用,以获取过滤后的结果。

语法

SQL Server 中 SUM() 函数的语法如下

此函数包含以下参数

aggregate_expression: 它是必需的表达式,表示我们要计算总和的列名。

table_name(s): 它指示我们要从中检索列的表的名称。 可以指定多个表。

WHERE 条件: 这是一个可选子句,用于定义应该满足的记录以供选择的条件。

DISTINCT: 它告诉函数仅对不同的值求和。

SUM() 函数示例

让我们借助各种示例了解 SQL Server 中 SUM() 函数的工作原理。我们将采用 'employee_info' 表来实际演示 SUM 函数。该表包含以下数据

SQL server sum function

SUM 函数的基本示例

此示例解释了 SUM 函数的基本用法,该函数返回指定列中所有值的总和。假设我们要计算给定表中总的工资额。我们可以编写如下查询

执行查询将返回以下输出

SQL server sum function

带有 DISTINCT 子句的 SUM 函数

DISTINCT 关键字仅计算表中唯一的数据。假设我们要计算 employee_info 表的 salary 列中唯一记录的总和。我们可以编写如下查询来实现相同的目的

执行查询将返回以下输出,其中显示了 salary 列中唯一值的总和

SQL server sum function

带有 WHERE 子句的 SUM 函数

WHERE 子句用于过滤表中的记录。此示例将使用 WHERE 子句和 SUM() 函数来计算工作时长大于 9 的员工的总工资

当我们执行查询时,它将返回以下结果

SQL server sum function

带有 GROUP BY 子句的 SUM 函数

GROUP BY 子句用于将具有相同值的行分组为汇总行。它在聚合函数中非常有用,用于生成汇总报告。如果我们尝试在 SELECT 语句中组合聚合列和非聚合列,则会收到错误,如下所示

这是错误消息

SQL server sum function

但是,如果我们使用 GROUP BY 子句,则不会抛出错误。以下查询将使用 SUM() 函数来计算每个职业的员工工资总和:

此查询查找与每个职业相关的员工,并对他们的总工资求和

SQL server sum function

带有 ORDER BY 子句的 SUM 函数

ORDER BY 子句用于按升序或降序对表进行排序。下面的示例将使用 SUM() 函数和 ORDER BY 子句,计算每个职业的员工工资总和,然后按总和工资的升序对结果集进行排序

执行该语句将显示以下输出

SQL server sum function

带有 HAVING 子句的 SUM 函数

HAVING 子句与 GROUP BY 子句一起使用以过滤分组行。此示例将使用 HAVING 子句和 SUM() 函数,计算每个职业的员工工资总和,然后检查聚合的工资是否大于 50000。如果为真,则相应记录将按总和工资的升序显示

执行该语句将返回以下输出

SQL server sum function

带有 OVER() 的 SUM 函数

OVER() 子句确定查询中的哪些行应用于该函数,该函数以什么顺序对其求值,以及何时应重新启动该函数的计算。下面的查询为 employee_info 表中的每个职业提供累计总销售额

执行查询将返回以下结果

SQL server sum function

结论

本文将解释关于如何在 SQL Server 中使用 SUM() 函数的完整概述。在使用此函数时,我们必须小心,因为它仅适用于数值数据类型。在这里,我们讨论了 SUM 函数的所有用例,并提供了各种示例,例如如何使用 WHERE、GROUP BY、HAVING 和 OVER 子句从表中获取总和值。