SQL SUM 函式

摘要:在本教程中,您將學習如何使用 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 表進行演示。

SQL SUM function - Employees table

要獲取所有員工的薪水總和,我們將 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 子句結合使用,以計算每個分組的總和。

資料庫 #

本教程是否有幫助?
© .