如何在Google BigQuery中计算订单的Cashback使用情况
Cashback背景
Cashback类似现金,但仅可在我方平台使用。用户可通过使用促销码下单、邀请其他用户加入平台等方式获取Cashback。
示例:
用户A于2023年1月1日下单10000元,获得2%的Cashback,即2%×10000=200元,对应get_cashback表数据如下:
| 获取日期 | 获取金额 |
|---|---|
| 2023-01-01 | 200 |
获取Cashback后,用户可使用其支付订单,若Cashback余额不足,可搭配真实现金支付。
需求说明
需计算订单是否使用了用户获取的Cashback,规则如下:
- Cashback自获取之日起7天后过期;
- 仅可使用已获取的Cashback金额,不可超额,不足部分需用户补充现金。
请编写Google BigQuery查询语句,基于两张表进行计算:
get_cashback表:记录用户获取Cashback的时间和金额,包含字段get_date(获取日期)、get_amount(获取金额);order表:记录用户的下单时间和订单金额,包含字段order_date(下单日期)、order_amount(订单金额)。
查询结果需包含以下5个字段:
order_date:下单日期order_amount:订单金额type:支付类型,取值为'cashback'(使用Cashback)或'new'(补充现金)get_date:Cashback获取日期(使用Cashback时填写,否则为null)amount:该订单使用的Cashback金额或补充的现金金额
示例1
get_cashback表数据:
| 获取日期 | 获取金额 |
|---|---|
| 2023-01-01 | 10000 |
| 2023-01-02 | 20000 |
| 2023-01-03 | 10000 |
order表数据:
| 下单日期 | 订单金额 |
|---|---|
| 2023-01-03 | 5000 |
| 2023-01-04 | 10000 |
| 2023-01-05 | 40000 |
查询结果:
| 下单日期 | 订单金额 | 支付类型 | 获取日期 | 金额 |
|---|---|---|---|---|
| 2023-01-03 | 5000 | cashback | 2023-01-01 | 5000 |
| 2023-01-04 | 10000 | cashback | 2023-01-01 | 5000 |
| 2023-01-04 | 10000 | cashback | 2023-01-02 | 5000 |
| 2023-01-05 | 40000 | cashback | 2023-01-02 | 15000 |
| 2023-01-05 | 40000 | cashback | 2023-01-03 | 10000 |
| 2023-01-05 | 40000 | new | null | 15000 |
说明:
用户于2023年1月1日获取10000元Cashback,1月3日下单5000元,使用该Cashback中的5000元,剩余5000元;1月4日下单10000元,使用剩余的5000元1月1日的Cashback,以及5000元1月2日的Cashback,1月2日的Cashback剩余15000元;1月5日下单40000元,使用1月2日剩余的15000元Cashback、1月3日的10000元Cashback,剩余15000元需用户补充现金。
示例2
get_cashback表数据:
| 获取日期 | 获取金额 |
|---|---|
| 2023-01-01 | 10000 |
| 2023-01-02 | 5000 |
order表数据:
| 下单日期 | 订单金额 |
|---|---|
| 2023-01-03 | 5000 |
| 2023-01-04 | 2000 |
| 2023-01-09 | 10000 |
查询结果:
| 下单日期 | 订单金额 | 支付类型 | 获取日期 | 金额 |
|---|---|---|---|---|
| 2023-01-03 | 5000 | cashback | 2023-01-01 | 5000 |
| 2023-01-04 | 2000 | cashback | 2023-01-01 | 2000 |
| 2023-01-09 | 10000 | cashback | 2023-01-02 | 5000 |
| 2023-01-09 | 10000 | new | null | 5000 |
说明:
1月3日下单5000元,使用1月1日Cashback中的5000元,剩余5000元;1月4日下单2000元,再次使用1月1日的Cashback,剩余3000元;1月9日下单时,1月1日的Cashback已在1月8日(获取后7天)过期,无法使用剩余的3000元,因此使用1月2日的5000元Cashback,剩余5000元需用户补充现金。
内容的提问来源于stack exchange,提问作者Joshua
相关产品推荐
相关产品推荐

