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 子句结合使用,以计算每个分组的总和。

数据库 #

本教程是否有帮助?
© .