无论是分析还是数仓,我们经常会碰到计算复购场景,复购计算过程中涉及到以下几点:
1、除用户是否归属复购外,复购指标统计,如金额、营收等
2、不同复购周期的计算,7天,30天,60天,90天等等
3、动态复购,用户每天起始往后的复购详情,又同归因
这里复购的统计变化比较多,主要涉及到两类的计算去重用户统计,复购指标统计。
如果在计算过程中不涉及到复购指标的统计,可以直接使用lead()开窗函数,在之前说的开窗函数里面讲过,具体的方法可以查下。
针对计算复购指标同样开窗,利用sum()over(partition by order by range )的函数,之前也介绍过,但是计算过程中需要构建一个日期序列。
举个基础的复购指标案例:
数据:用户消费记录:用户标识mid、消费日期cid、消费金额pnum
需求:统计用户3天、7天、30天会员复购金额
思路:将时间进行序列化后使用sum开窗的range进行求和处理
开窗函数具体的使用语法可以之前面的内容查找
数据表:
mid cid pnum
10086 2022-01-07 2.0
10086 2022-02-05 2.0
10086 2022-01-15 2.0
10086 2022-01-05 2.0
10086 2022-01-18 2.0
10086 2022-01-11 2.0
10086 2022-02-01 2.0
10086 2022-03-01 2.0
10086 2022-01-01 2.0
10086 2022-01-02 2.0
10086 2022-01