翻译页面
本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。
SUM
返回列或列分组中所有非 NULL 值的总和。
提示
使用 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。