SQL Sum()函數

在本教程中,我們將演示如何使用SQL SUM函數,此函數計算所有值或不同值的總和。

1. SQL SUM函數簡介

SQL SUM函數是一個聚合函數,它返回所有或不同值的總和。需要注意的是,只能將SUM函數應用於數字列。

以下說明了SUM函數的語法。

SUM([ALL|DISTINCT] expression)

ALL運算符用於將聚合應用於所有值。 SUM函數默認使用ALL運算符。

例如,如果有一組集合值:(1,2,3,3,NULL)。 使用SUM函數將返回9,請注意,SUM函數忽略NULL值。

要計算唯一值的總和,可以使用DISTINCT運算符,例如,集合(1,2,3,3,NULL)SUM(DISTINCT)6

2. SQL SUM函數示例

我們將使用下面的employees表進行演示。

mysql> DESC employees;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| employee_id   | int(11)      | NO   | PRI | NULL    | auto_increment |
| first_name    | varchar(20)  | YES  |     | NULL    |                |
| last_name     | varchar(25)  | NO   |     | NULL    |                |
| email         | varchar(100) | NO   |     | NULL    |                |
| phone_number  | varchar(20)  | YES  |     | NULL    |                |
| hire_date     | date         | NO   |     | NULL    |                |
| job_id        | int(11)      | NO   | MUL | NULL    |                |
| salary        | decimal(8,2) | NO   |     | NULL    |                |
| manager_id    | int(11)      | YES  | MUL | NULL    |                |
| department_id | int(11)      | YES  | MUL | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+
10 rows in set

要獲得所有員工的工資總和,我們將SUM函數應用於salary列,如下面的查詢:

SELECT 
    SUM(salary)
FROM
    employees;

要計算在部門ID爲 5 中工作的員工的工資總和,在上面的查詢中添加一個WHERE子句,如下所示:

SELECT 
    SUM(salary)
FROM
    employees
WHERE
    department_id = 5;

+-------------+
| SUM(salary) |
+-------------+
| 41200.00    |
+-------------+
1 row in set

2.1. SQL SUM帶有GROUP BY子句的示例

我們經常將SUM函數與GROUP BY子句結合使用來計算分組的總和。

例如,要計算每個部門的員工工資總和,我們將SUM函數應用於salary列,並按department_id列對行進行分組,如下所示:

SELECT
    department_id,
    SUM(salary)
FROM
    employees
GROUP BY
    department_id;

執行上面查詢語句,得到以下結果:

SQL Sum()函數

2.2. SQL SUM帶有ORDER BY子句的示例

假設希望將部門工資的總和按降序排序,我們在ORDER BY子句使用SUM函數,如下所示:

例如,如果要獲取工資總和大於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;

執行上面查詢語句,得到以下結果:

SQL Sum()函數

在本教程中,您學習瞭如何使用SUM函數計算集合中的值的總和。