业务背景:
1)在视频、内容、游戏行业均有月卡会员/季度会员等商业模式,现在有一张业务表记录每个用户每次开通的会员信息,字段如下:
| 用户id | 事件时间 | 事件类型 | 会员类型 |
| 111 | 20210901 | 开通会员 | 月卡30天 |
| 111 | 20210905 | 开通会员 | 月卡30天 |
| 111 | 20211226 | 开通会员 | 月卡30天 |
| 222 | 20211107 | 开通会员 | 季卡90天 |
| 222 | 20211123 | 开通会员 | 季卡90天 |
| 333 | 20211004 | 开通会员 | 月卡30天 |
2)每张月卡的权益有效期30天,季卡的权益有效期90天,在权益有效期内可以重复开通任意月卡季卡,权益有效期会累加。如,权益有效期还剩3天时又开通了1张月卡,则权益有效期变为33天。
3)权益有效期归0后,即常恒为0,不会进一步变为负数,直到下一次用户又开通了月卡季卡则重新开始计算有效期。
求问:
在这种,用户可以重复开通、且可能存在很长一段有效期为0的时间的情况下,如何通过hive的sql语句统计用户累计的剩余权益有效期?即,假设统计日是 20220110,则用户111的有效期为15天,222的有效期为116天,333的有效期为0天。