跳到主要内容
翻译页面

本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。

SUM

返回列或列分组中所有非 NULL 值的总和。

另请参阅:
[SELECT] [TOTAL]


提示

使用 TOTAL 函数对浮点数或长整型值求和。

语法​

SELECT SUM(columnExpression) FROM <multipartIdentifier>
[ GROUP BY groupByColumn ];

参数​

columnExpression
列或表达式。

如果 columnExpression 中的所有值均为 NULL,则 SUM 返回 NULL。

如果计算过程中的任何时刻发生整数溢出,SUM 会抛出“integer overflow”异常。[TOTAL]](/language-spec/functions/aggregate/total) 函数永远不会抛出整数溢出。

groupByColumn
用于执行汇总或聚合操作的一列或多列。GROUP BY 子句为每个列分组返回一行。

返回值​

如果所有非 NULL 输入均为整数,则返回一个整数,表示 columnExpression 的总和。如果任一输入不是整数或为 NULL,则返回一个浮点值,该值可能是真实总和的近似值。


示例​

返回列表达式在整个资源上的总和​

SELECT sum(json_array_length(disks)) as sum_disks
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';

返回按另一个列表达式分组的列表达式的总和​

SELECT tags, sum(json_array_length(disks)) as sum_disks
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a'
GROUP BY json_extract(tags, '$.instanceType');

将 SUM 用作窗口函数来计算累计总和​

-- Calculate running total and percentage of contributions
SELECT
login,
contributions,
SUM(contributions) OVER (ORDER BY contributions DESC) as running_total,
SUM(contributions) OVER () as total_contributions,
ROUND(100.0 * contributions / SUM(contributions) OVER (), 2) as pct_of_total
FROM github.repos.contributors
WHERE owner = 'stackql'
AND repo = 'stackql';

有关更多信息,请参阅 https://www.sqlite.org/lang_aggfunc.html#sumunc。