sql—用于保留分析的重复select语句

7bsow1i6  于 2021-07-29  发布在  Java
关注(0)|答案(0)|浏览(99)

我正在使用记录所有客户权利的临时表对订阅产品进行保留分析。表中的每一行都有:

customer_id, produc_id, start_date, expiration_date, product_serial_number, ...

客户id是唯一的。如果客户在到期日续订产品,新的到期日将每天更新到表中。
通常在每月的分析中,我计算客户id,然后按yyyy-mm(从开始日期提取)分组,作为队列的基础。然后我加入sum&case语句,例如:

sum(case when expiration_date >= ADD_MONTHS(start_date,1) then 1 else 0 end) as 'T+1M'
sum(case when expiration_date >= ADD_MONTHS(start_date,2) then 1 else 0 end) as 'T+2M'
....

我硬编码每一个“sum+case-when”行的每一个时期,我想检查保留。它每月都很管用。但现在我想更仔细地研究一个客户在到期日前60天的日常行为水平。我想知道是否还有比写60行更有效的方法,比如:

sum(case when opt_out_date >= expiration_date-1) then 1 else 0 end) as 'OO_T-1'
sum(case when opt_out_date >= expiration_date-2) then 1 else 0 end) as 'OO_T-2'
....

求和(当opt\u out\u date>=expiration\u date-60时为1,否则0结束)为'oo\u t-60'
opt\u out\u date是用户决定取消自动计费功能的日期。此分析的目的是在到期日之前检查有多少用户手动取消自动计费。
环境是teradata
多谢了。
样本数据和预期结果作为推荐样本数据添加
查询的预期结果

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题