SUM
📄字数 942
👁️阅读量 加载中...
功能描述
用于计算数值列的总和。
可以作为聚合函数或分析函数使用。
语法格式
sql
SUM([ DISTINCT | ALL ] expr) [ OVER (analytic_clause) ]
输入参数
expr
:DOUBLE
,INTEGER
,FLOAT
和所有INTERVAL
类型,用来指定输入数据。analytic_clause
:可选的分析子句,支持分组子句,排序子句以及范围子句,详情见analytic_clause。
输出结果
输出结果类型与输入结果类型一致,输入参数为NULL
,返回NULL
。
示例
sql
-- 创建示例表
SQL> CREATE TABLE employees (
employee_id INT IDENTITY(1,1) PRIMARY KEY,
manager_id INT NOT NULL,
last_name VARCHAR(50) NOT NULL,
hire_date DATE NOT NULL,
salary NUMERIC(10, 2) NOT NULL
);
-- 插入数据
SQL> INSERT INTO employees (manager_id, last_name, hire_date, salary) VALUES
(100, 'De Haan', TO_DATE('2001-01-13', 'YYYY-MM-DD'), 17000),
(100, 'Raphaely', TO_DATE('2002-12-07', 'YYYY-MM-DD'), 11000),
(100, 'Kaufling', TO_DATE('2003-05-01', 'YYYY-MM-DD'), 7900),
(100, 'Hartstein', TO_DATE('2004-02-17', 'YYYY-MM-DD'), 13000),
(100, 'Weiss', TO_DATE('2004-07-18', 'YYYY-MM-DD'), 8000),
(100, 'Russell', TO_DATE('2004-10-01', 'YYYY-MM-DD'), 14000);
SQL> SELECT SUM(salary) "TOTAL" FROM employees;
+-------+
| TOTAL |
+-------+
| 70900 |
+-------+
SQL> SELECT manager_id,last_name,salary,
SUM(salary) OVER (
PARTITION BY manager_id ORDER BY salary
) l_csum FROM employees;
+------------+-----------+--------+--------+
| MANAGER_ID | LAST_NAME | SALARY | L_CSUM |
+------------+-----------+--------+--------+
| 100 | Kaufling | 7900 | 7900 |
| 100 | Weiss | 8000 | 15900 |
| 100 | Raphaely | 11000 | 26900 |
| 100 | Hartstein | 13000 | 39900 |
| 100 | Russell | 14000 | 53900 |
| 100 | De Haan | 17000 | 70900 |
+------------+-----------+--------+--------+