在本教程中,我们将演示如何使用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
函数计算集合中的值的总和。