Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


SUM

📄字数 942
👁️阅读量 加载中...

功能描述

用于计算数值列的总和。
可以作为聚合函数或分析函数使用。

语法格式

sql
SUM([ DISTINCT | ALL ] expr) [ OVER (analytic_clause) ]

输入参数

  • exprDOUBLEINTEGERFLOAT和所有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  |
+------------+-----------+--------+--------+