与两个表 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 中有两个表。一张表有dateidname 列。对于每个名称,都有几个与之关联的 id。数据如下所示:

date          id         name
7/11           1           A
7/11           2           A
7/11           3           B
7/11           4           B

另一个表中有dateidcommentsshares 列。此表中的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 关联的所有值的滚动总和的主要内容,如果未能解决你的问题,请参考以下文章

两个表,一个表中的两列关联另一个表的id,如何将这个表中的两列显示为另一个表id对应的内容

sql 多表关联查询

查询一个表中所有数据并关联查询该表ID对应另一个表数据。

laravel 关联查询 表一、表二、两个表的关联表

如何比较 BigQuery 中的两个数组?

与事件的两个条件匹配的查询 ID - BigQuery