我试图将我的表修改为稍微不同的东西。贝娄是我的表,其中langs
包含每行的相同数组。 (总是[Dutch, English, French]
)。
#standardSQL
SELECT ['French','English','Dutch'] langs, [0, 2, 1] as value Union ALL
SELECT ['French','English','Dutch'], [1, 0, 1]
输出如下:
Row langs value
-------------------------
1 Dutch 1
English 2
French 0
-------------------------
2 Dutch 1
English 3
French 0
-------------------------
现在我想在所有行上总结值数组,并创建另一个表,其值列表示总值。但我正在寻找的版本如下:
Row langs value
-------------------------
1 Dutch 2 # (1+1)
-------------------------
2 English 5 # (2+3)
-------------------------
3 French 1 # (1+0)
-------------------------
我知道这可能看起来像一个非常转储的问题,但我对SQL非常新。
以下是BigQuery Standard SQL
#standardSQL
SELECT lang, SUM(val) total
FROM `project.dataset.table`,
UNNEST(langs) lang WITH OFFSET
JOIN UNNEST(value) val WITH OFFSET
USING(OFFSET)
GROUP BY lang
您可以使用虚拟/样本数据进行测试,使用上面的示例,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT ['French','English','Dutch'] langs, [1, 2, 1] AS value UNION ALL
SELECT ['French','English','Dutch'], [0, 3, 1]
)
SELECT lang, SUM(val) total
FROM `project.dataset.table`,
UNNEST(langs) lang WITH OFFSET
JOIN UNNEST(value) val WITH OFFSET
USING(OFFSET)
GROUP BY lang
结果
Row lang total
1 French 1
2 English 5
3 Dutch 2