【问题标题】:Rolling sum of all values associated with the ids from two tables BigQuery与两个表 BigQuery 中的 id 关联的所有值的滚动总和
【发布时间】: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。

标签: join group-by google-bigquery sum


【解决方案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 我在这里发布了一个新问题:stackoverflow.com/questions/68666837/…
猜你喜欢
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 2018-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多