是否可以在presto sql中执行顺序行计算?
我有用户成本信息和小时折扣信息。 我试图得到下面的结果使用下面两个表 每次用户成本都会应用每小时的折扣,同一时间的用户共享折扣。 折扣按顺序应用于每一行,并一直执行,直到没有更多的折扣可用 我认为使用presto的窗口功能是可能的,所以我尝试了几天,但没有成功。我可以通过查询创建以下结果吗 表:用户成本是否可以在presto sql中执行顺序行计算?,sql,bigdata,presto,Sql,Bigdata,Presto,我有用户成本信息和小时折扣信息。 我试图得到下面的结果使用下面两个表 每次用户成本都会应用每小时的折扣,同一时间的用户共享折扣。 折扣按顺序应用于每一行,并一直执行,直到没有更多的折扣可用 我认为使用presto的窗口功能是可能的,所以我尝试了几天,但没有成功。我可以通过查询创建以下结果吗 表:用户成本 time user_id cost 1 aaa 20 1 bbb 5 2 aaa 11 2
time user_id cost
1 aaa 20
1 bbb 5
2 aaa 11
2 bbb 5
3 aaa 15
4 aaa 1
4 bbb 1
表:每次折扣
discount_id cost
d-1 10
d-2 5
结果:
time user_id type cost discount_id discounted_cost
1 aaa discount d-1 10
1 aaa discount d-2 5
1 aaa usage 5
1 bbb usage 5
2 aaa discount d-1 10
2 aaa discount d-2 1
2 bbb discount d-2 4
2 bbb usage 1
3 aaa discount d-1 10
3 aaa discount d-2 5
4 aaa discount d-1 1
4 bbb discount d-1 1
+加:
- 您应该能够看到哪些折扣适用于哪些用户以及每次折扣多少
- 每次的贴现成本不能大于使用成本和可贴现成本
- 如果对所有时间成本进行了折扣,则不会显示“使用率”(相反,折扣前的值可以通过折扣成本进行推断)
- 用户“aaa”使用的成本为20,用户“bbb”使用的成本为5。 d-1的10折扣和d-2的5折扣都适用于aaa,因此aaa的最终成本为5。所有折扣均适用于aaa,因此bbb的最终成本仍然为5
- aaa使用11,bbb使用5。d-1给予aaa 10的折扣,d-2给予1的折扣,因此aaa不收费。d-2中的5个剩下4个。这可以应用于BBB。所以bbb的最终成本是1
- 当两个用户的成本均为1时,仅使用d-1中10个用户中的2个进行折扣。两个用户都没有最终用法