动态区间定位

该博客讨论了一个SQL问题,涉及如何将折扣应用到交易记录中,根据折扣表的时间范围。作者给出了一个例子,展示了如何通过跨行操作匹配Transaction表和Discount表,并使用SPL语言来实现这个过程。

【问题】

i have two tables, for example :

Table 1 - Transaction

TransID |User   | Date

1       | Andrew |2015-06-1613:13:00

2       | Andrew |2015-06-1613:15:00

3       | Andrew |2015-06-1613:17:00

4       | Andrew |2015-06-1614:15:00

5       | Andrew |2015-06-1614:18:00

6       | Andrew |2015-06-1614:25:00

7       | Andrew |2015-06-1614:35:00

8       | Andrew |2015-06-1614:55:00

Table2 - DISCOUNT

DiscountID |User | Date | DISCOUNT

1 | Andrew |2015-06-1613:00:00 |30 

2 | Andrew |2015-06-1614:00:00 |25

2 | Andrew |2015-06-1614:30:00 |20

I want to apply the ‘Discount’ according to the time frame in ‘Table 2’, and become like this below.

Table outcome

User | Date | Discount

Andrew |2015-06-1613:13:00 |30

Andrew |2015-06-1613:15:00 |30

Andrew |2015-06-1613:17:00 |30

Andrew |2015-06-1614:15:00 |25

Andrew |2015-06-1614:18:00 |25

Andrew |2015-06-1614:25:00 |25

Andrew |2015-06-1614:35:00 |20

Andrew |2015-06-1614:55:00 |20

Please help me for this problem, i’m already frustrated.

Thank you very muchh.

【回答】

对 DISCOUNT 表做跨行运算拼出区间,用 JOIN 不好写了,读出来用 SPL 能够实现:

A
1$select*fromTransaction
2$select*from Discountorder by Dat
3=A2.(Date)
4=A1.new(User,Date,A2(A3.pseg(Date)).Discount:d)

A1:查找 Transaction 表

A2:查找 Discount 表并按时间排序

A3:获取折扣表的时间

A4:按交易表的时间段定位折扣表中的折扣值,生成新序表

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值