mysql - 来自另一个表的有限时间范围的聚合

标签 mysql sql presto

我有一个包含日期、产品 ID、金额、用户 ID 的表。 看起来像这样

table 1
date       userid   amount  productID
2019-07-01  111       10    43214
2019-07-15  112       20    22551
2019-07-19  113       10    22551
2019-08-19  114       30    22551
2019-08-20  111       20    52212
2019-08-20  115       40    22225
2019-08-20  155       50    55521
2019-08-23  155       50    55521
2019-08-23  155       50    55521

我还有一个表格将用作聚合时的引用。 第二个表包含productID、start_date、end_date。

table 2
product ID  start_date  end_date
22551   2019-07-19  2019-08-20
22225   2019-07-19  2019-08-20
55521   2019-07-19  2019-08-20

期望的结果是根据表 2 中的规则计算表 1 中的总和(金额)。期望的结果如下所示

result
productID   sum(amount)
22551   40
22225   40
55521   50

最佳答案

这看起来像JOINGROUP BY:

select t1.productId, sum(t1.amount)
from table1 t1 join
     table2 t2
     on t1.productId = t2.productId and
        t1.date >= t2.start_date and
        t1.date <= t2.end_date
group by t1.productId;

关于mysql - 来自另一个表的有限时间范围的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57869808/

相关文章:

java - Athena 从 parquet 模式创建表

sql - 使用 SQL Server 临时表的最佳实践

c# - View 上的 Entity Framework 导航属性

java - 类型不匹配 : cannot convert from java. util.Date 到 java.sql.Date

php - 访问类内函数中声明的变量 (PHP)

mysql - 分别过去四个月的 Sum(count()) ?

java - Presto集群+如何根据内存资源调优jvm.config

database - 连接 Presto 和 Apache SuperSet

mysql - 如何更新 TomEE JDBCRealm 中的用户?

php - 如何一次将大量数据插入mySQL数据库?