Hive 统计会员的剩余权益时间

业务背景:
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天。

img

img

img


最后的结果已经出来了,但是我没有过滤。你需要过滤一下。