摘要:在本教程中,您将学习如何使用 SQL SUM 函数来计算所有值或不同值的总和。
SQL SUM 函数简介 #
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) total_salary
FROM
employees;Code language: SQL (Structured Query Language) (sql)输出
total_salary
--------------
322400.00Code language: CSS (css)要计算部门 ID 为 5 的员工的薪水总和,我们在上面的查询中添加一个 WHERE 子句,如下所示:
SELECT
SUM(salary) total_salary
FROM
employees
WHERE
department_id = 5;Code language: SQL (Structured Query Language) (sql)输出
total_salary
--------------
41200.00Code language: CSS (css)SUM 函数与 GROUP BY 子句结合使用示例 #
我们经常将 SUM 函数与 GROUP BY 子句结合使用,以计算分组的总和。
例如,要计算每个部门员工的薪水总和,我们将 SUM 函数应用于 salary 列,并按 department_id 列对行进行分组,如下查询所示:
SELECT
department_id,
SUM(salary) total_salary
FROM
employees
GROUP BY
department_id
ORDER BY
total_salary;Code language: SQL (Structured Query Language) (sql)输出
department_id | total_salary
---------------+--------------
1 | 4400.00
4 | 6500.00
7 | 10000.00
2 | 19000.00
11 | 20300.00
3 | 24900.00
6 | 28800.00
5 | 41200.00
10 | 51600.00
8 | 57700.00
9 | 58000.00要在结果集中包含部门名称,我们将 employees 表与 departments 表进行连接,如下所示:
SELECT
department_name,
SUM(salary) total_salary
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
department_name
ORDER BY
total_salary;Code language: SQL (Structured Query Language) (sql)输出
department_name | total_salary
------------------+--------------
Administration | 4400.00
Human Resources | 6500.00
Public Relations | 10000.00
Marketing | 19000.00
Accounting | 20300.00
Purchasing | 24900.00
IT | 28800.00
Shipping | 41200.00
Finance | 51600.00
Sales | 57700.00
Executive | 58000.00Code language: PHP (php)SUM 函数与 HAVING 子句结合使用示例 #
要根据条件筛选分组,您可以使用 HAVING 子句。如果您想根据 SUM 函数的结果来筛选分组,则必须将 SUM 函数放在 HAVING 子句中。
例如,如果您想获取薪水总和大于 3000 的部门及其薪水总和,可以使用以下语句:
SELECT
department_name,
SUM(salary) total_salary
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
department_name
HAVING
SUM(salary) > 30000
ORDER BY
total_salary;Code language: SQL (Structured Query Language) (sql)输出
department_name | total_salary
-----------------+--------------
Shipping | 41200.00
Finance | 51600.00
Sales | 57700.00
Executive | 58000.00摘要 #
- 使用
SUM函数计算集合中值的总和。 - 将
SUM函数与GROUP BY子句结合使用,以计算每个分组的总和。
数据库 #
本教程是否有帮助?