在本教學中,我們將演示如何使用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
。
我們將使用下面的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;
執行上面查詢語句,得到以下結果:
假設希望將部門工資的總和按降序排序,我們在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;
執行上面查詢語句,得到以下結果:
在本教學中,您學習了如何使用SUM
函式計算集合中的值的總和。