Sql简介 专题
专题目录
您的位置:database > Sql简介专题 > SQL Sum()函数
SQL Sum()函数
作者:--    发布时间:2019-11-20

在本教程中,我们将演示如何使用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;

执行上面查询语句,得到以下结果:

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;

执行上面查询语句,得到以下结果:

在本教程中,您学习了如何使用sum函数计算集合中的值的总和。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册