提问人:justnewbie89 提问时间:9/10/2019 最后编辑:justnewbie89 更新时间:9/10/2019 访问量:112
从另一个表 presto 进行有限时间范围的聚合
Aggregation with limited time range from another table presto
问:
我有一个包含日期、productID、金额、userid 的表。 它看起来像这样
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 中的 sum(amount)。期望的结果如下所示
result
productID sum(amount)
22551 40
22225 40
55521 50
答:
0赞
Zaynul Abadin Tuhin
9/10/2019
#1
使用聚合
select t1.productid
, sum(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.product
评论
0赞
Zaynul Abadin Tuhin
9/10/2019
@RaymondNijland 当我用你投反对票的日期进行编辑时
0赞
Zaynul Abadin Tuhin
9/10/2019
@RaymondNijland对不起,我的猜测
0赞
Raymond Nijland
9/10/2019
没关系。。Annyhow IAM 将删除我的评论,因为您的答案已更改为确实给出正确结果的内容。
1赞
Gordon Linoff
9/10/2019
#2
这看起来像一个 和 :JOIN
GROUP 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;
评论