根据另一个表中的开始日期和结束日期对值求和

Posted

技术标签:

【中文标题】根据另一个表中的开始日期和结束日期对值求和【英文标题】:Sum values based on start and end dates in another table 【发布时间】:2020-10-27 07:45:14 【问题描述】:

我正在尝试使用 SQL 在 BigQuery 中进行计算,但我不知道该怎么做。 我有两张桌子:

Tablename: Periods
id            INTEGER
start_date    DATE
end_date      DATE

还有一张桌子

Tablename: Data
date         DATE
id           INTEGER
value        FLOAT

我想要做的是创建一个查询,可以将每个 id 的值和 Periods 表中的时间范围(start_date 到 end_date)相加。在这种情况下,Data 表的 id 值可能超出 Periods 表中的时间范围,因此我需要 Query 将总和限制为从 - 到 start_date 和 end_date。

希望有人能指出我正确的方向。

【问题讨论】:

【参考方案1】:

考虑使用子查询:

SELECT 
  id,
  (SELECT SUM(value) 
   FROM Data 
   WHERE Data.id = Periods.id
     AND Data.date >= Periods.start_date 
     AND Data.date <= Periods.end_date
  ) AS sums
FROM Periods

【讨论】:

以上是关于根据另一个表中的开始日期和结束日期对值求和的主要内容,如果未能解决你的问题,请参考以下文章

Oracle Query 按另一个表中的每个日期范围对一列求和

在包含多个开始和日期列表的表中查找日期,如果找到则返回默认值

从表中的开始日期和结束日期在 Postgres 中生成系列

在不同的表中返回最近的日期

如何对位于开始日期和结束日期之间的一组值求和?

如何根据ios中的特定键从数组中获取字典