如何在BigQuery中对字段内的数字数组进行求和聚合?
在BigQuery中对数组字段内的元素求和
以下是两种可行的解决方案,帮你计算每个数组内所有数字的总和:
方法1:UNNEST + GROUP BY(基础通用写法)
如果你的表有唯一标识每行的字段(比如ID),可以用这个写法拆分数组后按行分组求和:
SELECT row_id, -- 替换成你表中的唯一行标识字段 SUM(element) AS array_total FROM your_table, UNNEST(Field) AS element GROUP BY row_id
如果表没有唯一主键,也可以直接按原数组字段分组(注意:如果有完全相同的数组会被合并,根据你的需求选择):
SELECT Field, -- 可选保留原数组 SUM(element) AS array_total FROM your_table, UNNEST(Field) AS element GROUP BY Field
你之前用UNNEST失败大概率是没加GROUP BY,直接求和会得到所有数组元素的全局总和,而不是每个数组单独的和。
方法2:子查询直接求和(更简洁)
BigQuery支持在SELECT语句中嵌套子查询,直接对每个数组执行求和操作,无需分组:
SELECT Field, -- 可选保留原数组 (SELECT SUM(x) FROM UNNEST(Field) x) AS array_total FROM your_table
这种写法更直观,不需要处理分组逻辑,适合快速计算单个数组的总和。
内容的提问来源于stack exchange,提问作者redwytnblakII
相关产品推荐
相关产品推荐

