如何在BigQuery中计算重复数值数组列的元素总和?
如何在BigQuery中计算数值类型数组的元素总和
方法1:使用内置函数ARRAY_SUM()(推荐)
BigQuery提供了专门针对数值数组求和的内置函数ARRAY_SUM(),可直接对数组列调用,无需展开数组,且支持任意长度的数组(包括空数组)。
针对你的示例数据,查询语句如下:
SELECT repeated_numeric, ARRAY_SUM(repeated_numeric) AS sum FROM ( SELECT [4, 5, 9] as repeated_numeric UNION ALL SELECT [2,3] );
如果需要将空数组的求和结果返回0而非NULL,可结合IFNULL()函数处理:
SELECT repeated_numeric, IFNULL(ARRAY_SUM(repeated_numeric), 0) AS sum FROM your_table;
方法2:通过UNNEST()展开数组后求和
如果需要对数组元素执行额外逻辑(比如过滤特定值),可以先通过UNNEST()展开数组,再按原始行分组求和:
SELECT original_row, repeated_numeric, SUM(element) AS sum FROM ( SELECT ROW_NUMBER() OVER() AS original_row, repeated_numeric, element FROM ( SELECT [4, 5, 9] as repeated_numeric UNION ALL SELECT [2,3] ), UNNEST(repeated_numeric) AS element ) GROUP BY original_row, repeated_numeric ORDER BY original_row;
结果验证
两种方法都会输出你期望的结果:
| Row | repeated_numeric | sum |
|---|---|---|
| 1 | [4, 5, 9] | 18 |
| 2 | [2,3] | 5 |
内容的提问来源于stack exchange,提问作者Maxime Oriol
相关产品推荐
相关产品推荐

