在电商行业,老板或运营同学经常需要看客户活跃,留存,流失情况。今天,就重点聊一下【如何计算客户的留存率?】
留存即客户在完成第一次交易后,在后续的日子里,是否持续的上来交易。如果按月为单位,则就是客户首次成交后,后续月份的成交比例。
被观察客户群:某月份首次成交客户 。后续的留存率都是基于这些客户来计算的。
月度留存率算法公式:
月度留存率 = 某月份中被观察客户中成交客户数 / 被观察月份的总成交客户数
举个例子:
假设2020年1月份,A B C D 四位客户首次成交;2月份 A B 成交;3月份 D成交,4月份B C D有成交。求 1月份客户在后续2,3,4月份的留存率分别是多少?
根据前面的算法公式,则:
2月份的留存率 = 2 /4 =50%
3月份的留存率 = 1/4 =25%
4月份的留存率 = 3/4 =75%
了解了计算方法后,下面介绍一下sql的写法。
用SQL代码计算各月新客的留存率
第一步,先计算各月的新客都有哪些客户
假设有交易订单表 orders,则准备好新客户表和月度成交表:
var 月新客户 = select `月份`,`客户id` from `订单表` where `是否新客`=\'是新客\' and `成交`=1
第二步,计算出来各月成交的客户id
var 月度成交=select `月份`,`客户id` from `订单表`
where `成交`=1
group by `月份`,`客户id`
1月客户的后续月份留存率:
temp t202001_0= select 202001 as mm, count(`客户id`) as tn from `月新客` where `月份`=202001
temp t202001_1= select 202001 as mm, b.`月份`,count(b.`客户id`) as leftnum
from `月新客户` a
inner join `月度成交` b on a.`月份`=202001 and a.`客户id`=b.`客户id`
where a.`月份`=202001
group by mm, b.`月份`
temp t202001_2= select a.mm as `新客月份`, date_format(a.`月份`,\'y-MM\')as `月份`, a.leftnum/ b.tn as `留存率` from t20`001_1 a left join t20`001_0 b on a.mm=b.mm
output t202001_2
如果你的平台系统支持函数或存储过程,则可以把这部分代码写成函数,入口参数就是指定月份,出口结果就是这个月份的新客在后续月份的留存率数据表。
如果你的系统不支持函数或存储过程,则可以复制这部分代码成后续个月代码。最后用union all 关联起来即可。
形如:
select `新客月份`,`月份`,`留存率` from `1月新客留存率` union all
select `新客月份`,`月份`,`留存率` from `2月新客留存率`
在不同的平台系统下,SQL语法不同,请自行修改。
本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/215060.html
如有侵犯您的合法权益请发邮件951076433@qq.com联系删除