SQL 求和,对所有值求和,例如,计算全体员工的工资总和。
SQL 求和 问题描述
对所有值求和,例如,计算全体员工的工资总和。
SQL 求和 解决方案
针对整个表求和时,只要对感兴趣的列执行 SUM
函数即可,不需要使用 GROUP BY
子句。
1 select sum(sal)
2 from emp
SUM(SAL)
----------
29025
如果把数据分为多组,就需要使用 SUM
函数和 GROUP BY
子句。下面的例子按照部门计算员工的工资总额。
1 select deptno, sum(sal) as total_for_dept
2 from emp
3 group by deptno
DEPTNO TOTAL_FOR_DEPT
---------- --------------
10 8750
20 10875
30 9400
SQL 求和 扩展知识
当计算各部门的工资总额时,其实是在对数据进行分组。对于每个部门而言,所有员工的工资会被相加,并得出总和。本例是一个用 SQL 做聚合运算的例子,因为重点关注的不是某个员工的工资这样的详细信息,而是各个部门的工资总额。注意,SUM
函数会忽略 Null
,但是我们可能会遇到 Null
分组,下面的例子会展示这一点。DEPTNO
为 10
的员工都没有业务提成,因而对于 DEPTNO
等于 10
的分组而言,计算 COMM
的总和会返回 Null
。
select deptno, comm
from emp
where deptno in (10,30)
order by 1
DEPTNO COMM
---------- ----------
10
10
10
30 300
30 500
30
30 0
30 1300
30
select sum(comm)
from emp
SUM(COMM)
----------
2100
select deptno, sum(comm)
from emp
where deptno in (10,30)
group by deptno
DEPTNO SUM(COMM)
---------- ----------
10
30 2100