Google BigQuery数组聚合求和需求:同y值对应z值求和
解决方案
要实现你需要的效果,核心是先对相同x和y的记录汇总z的总和,再基于x进行数组聚合。具体步骤如下:
修正后的查询代码
WITH vals AS ( SELECT 1 x, 'a' y, 120 z UNION ALL SELECT 1 x, 'a' y, 359 z UNION ALL SELECT 1 x, 'b' y, 130 z UNION ALL SELECT 2 x, 'a' y, 140 z UNION ALL SELECT 2 x, 'c' y, 160 z ), summed_vals AS ( SELECT x, y, SUM(z) AS sum_z FROM vals GROUP BY x, y ) SELECT x, ARRAY_AGG(y) AS array_aggy, ARRAY_AGG(sum_z) AS array_aggz FROM summed_vals GROUP BY x;
代码说明
summed_vals公共表表达式:先按x和y分组,计算每组z的总和sum_z,这一步会把相同x下重复的y合并,同时汇总对应的z值。- 最终聚合:基于处理后的
summed_vals,再按x分组,用ARRAY_AGG分别聚合y和sum_z,就能得到你期望的结果。
执行结果
Row x array_aggy array_aggz 1 1 a 479 b 130 2 2 a 140 c 160
内容的提问来源于stack exchange,提问作者GraphicalDot
相关产品推荐
相关产品推荐

