这个Oracle教程解释了如何使用Oracle / PLSQL SUM函数。
SUM(x) 添加x中的所有值,并返回总和。
SUM函数对一组行进行操作,并返回一行输出。 Null值被SUM函数忽略。您可以使用DISTINCT关键字排除重复条目。
语法
Oracle / PLSQL SUM函数的语法是:
SELECT SUM( expression )
FROM tables
WHERE conditions;
表达式可以是数字字段或公式。
以下SQL计算工资超过50000的所有员工的总工资。
SELECT SUM(salary) AS "Total Salary"
FROM employees
WHERE salary > 50000;
我们可以在SUM函数中使用DISTINCT子句。下面的SQL语句返回薪水高于$ 50,000 /年的唯一薪水值的总薪水。
SELECT SUM(DISTINCT salary) AS "Total Salary"
FROM employees
WHERE salary > 50000;
如果有两个工资为$ 80,000 /年,这些值中只有一个将用于SUM函数。
我们还可以使用SUM函数中的表达式。
SELECT SUM(sales * 0.05) AS "Total Commission"
FROM orders;
我们还可以使用带有group by子句的SUM函数。以这种方式,SUM将计算每个组的和值。
SELECT department, SUM(sales) AS "Total sales"
FROM order_details
GROUP BY department;
实例
CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
SAL NUMBER(7, 2),
DEPTNO NUMBER(2));
INSERT INTO EMP VALUES (1, 'SMITH', 'CLERK', 800, 20);
INSERT INTO EMP VALUES (2, 'ALLEN', 'SALESMAN', 1600, 30);
INSERT INTO EMP VALUES (3, 'WARD', 'SALESMAN', 1250, 30);
INSERT INTO EMP VALUES (4, 'JONES', 'MANAGER', 2975, 20);
INSERT INTO EMP VALUES (5, 'MARTIN','SALESMAN', 1250, 30);
INSERT INTO EMP VALUES (6, 'BLAKE', 'MANAGER', 2850, 30);
INSERT INTO EMP VALUES (7, 'CLARK', 'MANAGER', 2850, 10);
INSERT INTO EMP VALUES (8, 'SCOTT', 'ANALYST', 3000, 20);
INSERT INTO EMP VALUES (9, 'KING', 'PRESIDENT',3000, 10);
INSERT INTO EMP VALUES (10,'TURNER','SALESMAN', 1500, 30);
INSERT INTO EMP VALUES (11,'ADAMS', 'CLERK', 1500, 20);
SQL> select sum(sal) from emp;
SUM(SAL)
----------
22575
SQL>
SUM()函数与group by子句使用实例:
SQL> select deptno, SUM(sal) from emp group by deptno;
DEPTNO SUM(SAL)
---------- ----------
30 8450
20 8275
10 5850
SQL>