SQL-开窗函数计算复购指标统计案例

本文探讨了在SQL中计算复购指标的重要性,包括复购金额、不同周期的复购统计,并强调了动态复购的挑战。通过使用lead()和sum() over(partition by order by range)等开窗函数,可以实现复购详情的精确计算。文中以用户消费记录为例,展示了如何统计3天、7天和30天内的会员复购金额,详细说明了计算过程和所需的数据序列化步骤。

无论是分析还是数仓,我们经常会碰到计算复购场景,复购计算过程中涉及到以下几点:

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-03	2.0

sql语句:

with test_table as(
    -- 创建一个用户消费记录临时表
select '10086' as mid,'2022-01-01' as cid,2.0 as pnum
un
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值