摘要:在本教程中,您將學習如何使用 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子句結合使用,以計算每個分組的總和。
資料庫 #
本教程是否有幫助?