我有一个有关BigQuery(使用标准SQL)的问题。
假设我有以下数据:
Id Arrays
1 [1, 4]
2 [2]
1 [3, 4, 6, 91]
2 [0, 9, 1, 4, 0, 37]
我想将数组求和为以下输出:
Id Arrays
1 [4, 8, 6, 91]
2 [2, 9, 1, 4, 0, 37]
每个数组中的元素数量可以变化。而且,求和结果的顺序非常重要。
我考虑了标准SQL中的用户定义函数,但是失败了。
有人可以告诉我使用标准SQL是否可以实现这一目标,如果可以,怎么办?
如果您能给我看示例代码,那将是很棒的。预先感谢。
答案 0 :(得分:1)
这应该有效:
SELECT
id, ARRAY_AGG(x ORDER BY idx) AS arrays
FROM (
SELECT id, idx, SUM(x) AS x
FROM table,
UNNEST(arrays) AS x WITH OFFSET idx
GROUP BY id, idx
)
GROUP BY id
它首先根据索引对数组元素求和,然后使用原始元素顺序将其重新聚合为数组。