标准 SQL - 对列中的数组求和

Standard SQL - Sum arrays in a column

我对 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 来实现,如果可以,如何实现?

如果你能给我一个示例代码就太好了。提前致谢。

这应该有效:

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

它首先根据索引对数组元素进行求和,然后使用原始元素顺序重新聚合成数组。