与两个表 BigQuery 中的 id 关联的所有值的滚动总和
Posted
技术标签:
【中文标题】与两个表 BigQuery 中的 id 关联的所有值的滚动总和【英文标题】:Rolling sum of all values associated with the ids from two tables BigQuery 【发布时间】:2021-10-09 23:15:55 【问题描述】:我在 BigQuery 中有两个表。一张表有date
、id
和name
列。对于每个名称,都有几个与之关联的 id。数据如下所示:
date id name
7/11 1 A
7/11 2 A
7/11 3 B
7/11 4 B
另一个表中有date
、id
、comments
、shares
列。此表中的id
没有与之关联的名称。该表如下所示:
date id comments shares
7/11 1 2 null
7/11 2 4 2
7/11 3 1 1
7/11 4 5 3
最终目标是获取与特定名称相关联的所有 id(表 1),并总结 cmets 和共享的名称,或者更确切地说是 id 列表(表 2) 所需的输出如下所示:
date name comments shares
7/11 A 6 2
7/11 B 6 4
【问题讨论】:
是 mysql 还是 BigQuery?请澄清! 抱歉,这是 BigQuery。 【参考方案1】:您需要连接 2 个表和聚合:
SELECT t1.date, t1.name,
COALESCE(SUM(t2.comments), 0) comments,
COALESCE(SUM(t2.shares), 0) shares
FROM table1 t1 LEFT JOIN table2 t2
ON t2.date = t1.date AND t2.id = t1.id
GROUP BY t1.date, t1.name
请参阅demo。
【讨论】:
这按预期工作!非常感谢!我现在注意到该名称的每个 id 都列出了五次,因此它加入了五次,并且这个数字比它应该的大五倍。有没有办法添加一个代码来加入每个 id 一次?如果需要,我可以单独发布一个问题,谢谢您的帮助! @Chique_Code 您应该发布一个新问题,在其中提供示例数据,例如实际数据和预期结果。 谢谢@forpas 我在这里发布了一个新问题:***.com/questions/68666837/…以上是关于与两个表 BigQuery 中的 id 关联的所有值的滚动总和的主要内容,如果未能解决你的问题,请参考以下文章