摘要: 在本教學中,我們將向您介紹 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 函數來計算集合中值的總和。