概述:本教程将介绍 SQL SUM 函数,用于计算所有值或唯一值之和。
SQL SUM 函数介绍
SQL SUM 函数是一种聚合函数,用于返回所有值或唯一值之和。我们仅可将 SUM 函数应用于数字列。
以下说明了 SUM 函数的语法。
SUM([ALL|DISTINCT] expression)
Code language: SQL (Structured Query Language) (sql)
ALL 运算符允许您对所有值应用聚合。SUM 函数默认使用 ALL 运算符。
例如,如果您有一组 (1,2,3,3,NULL),SUM 函数返回 9。请注意,SUM 函数忽略 NULL 值。
要计算唯一值之和,请使用 DISTINCT 运算符,例如,集合 (1,2,3,3,NULL) 的 SUM(DISTINCT) 为 6。
SQL SUM 函数示例
我们将使用以下 employees
表进行演示。

要获取所有员工工资的总和,我们将 SUM 函数应用于 salary 列,如下所示
SELECT
SUM(salary)
FROM
employees;
Code language: SQL (Structured Query Language) (sql)
要计算在部门 ID 为 5 的部门工作的员工工资的总和,我们向上述查询添加 WHERE 子句,如下所示
SELECT
SUM(salary)
FROM
employees
WHERE
department_id = 5;
Code language: SQL (Structured Query Language) (sql)
SQL SUM 与 GROUP BY 子句示例
我们经常将 SUM 函数与 GROUP BY 子句结合使用来计算组的总和。
例如,要计算每个部门的员工工资的总和,我们将 SUM 函数应用于 salary
列,并按 department_id
列对行进行分组,如下所示
SELECT
department_id,
SUM(salary)
FROM
employees
GROUP BY
department_id;
Code language: SQL (Structured Query Language) (sql)
要在结果集中包含部门名称,我们将 employees
表与 departments
表 连接,如下所示
SELECT
e.department_id,
department_name,
SUM(salary)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id;
Code language: SQL (Structured Query Language) (sql)
SQL SUM 与 ORDER BY 子句示例
假设我们希望对部门工资的总和进行降序排列,在这种情况下,我们将在 ORDER BY 子句中使用 SUM 函数,如下所示
SELECT
e.department_id,
department_name,
SUM(salary)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id
ORDER BY
SUM(salary) DESC;
Code language: SQL (Structured Query Language) (sql)
SQL SUM 函数与 HAVING 子句示例
要基于条件筛选组,请使用 HAVING 子句。如果您希望基于 SUM 函数的结果筛选组,则必须将 SUM 函数置于 GROUP BY 子句中。
例如,如果您希望获取其工资总和大于 3000 的部门及其工资总和,请使用以下语句
SELECT
e.department_id,
department_name,
SUM(salary)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id
HAVING
SUM(salary) > 30000
ORDER BY
SUM(salary) DESC;
Code language: SQL (Structured Query Language) (sql)
在本教程中,您已学习如何使用 SUM 函数计算集合中值的总和。