
SUM函数计算给定参数expr的数值和,其返回值类型如下:
| expr类型 | 返回值 |
|---|---|
| TINYINT、SMALLINT | BIGINT |
| INT、BIGINT | NUMBER |
| FLOAT | FLOAT |
| DOUBLE | DOUBLE |
当参数为其他类型且无法转换为上述类型时,不执行计算并返回类型转换错误或是类型不支持。
在单行计算中,当expr的值为NULL时,函数返回NULL。
在多行计算中,函数将忽略expr值为空的行,当所有行均为空时,计算结果为NULL。
聚集函数不可嵌套,因此expr为除聚集函数之外的其他通用表达式,其类型只能是数值型、字符型。
DISTINCT
表示在计算数值和时,过滤掉重复的行。
ALL
默认值,表示对所有行计算数值和。
示例
SELECT area_no,SUM(employee_count) sum FROM branches1 GROUP BY area_no;
AREA_NO SUM
70
01 70
04 40
02
05 40
SELECT area_no,SUM(10) sum FROM branches1 GROUP BY area_no;
AREA_NO SUM
20
01 40
04 40
02 10
05 10
OVER
当指定OVER关键字时,SUM将作为窗口函数,并支持滑动窗口,返回多行的数值和。
analytic_clause
窗口函数通用语法。
示例
SELECT year,month,branch,revenue_total FROM finance_info;
YEAR MONTH BRANCH REVENUE_TOTAL
2001 01 0201 2888
2021 01 0201 28888
2021 01 0101 38888
2021 02 0101 37778
SELECT year,month,
revenue_total curr,
SUM(revenue_total) OVER (PARTITION BY year ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) tonow
FROM finance_info;
YEAR MONTH CURR TONOW
2001 01 2888 2888
2021 01 28888 28888
2021 01 38888 67776
2021 02 37778 105554
SELECT year,month,
SUM(revenue_total) curr,
SUM(SUM(revenue_total)) OVER (PARTITION BY year ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) tonow
FROM finance_info
GROUP BY year,month;
YEAR MONTH CURR TONOW
2001 01 2888 2888
2021 01 67776 67776
2021 02 37778 105554

被折叠的 条评论
为什么被折叠?



