月度留存率算法公式 留存率怎么算?

在电商行业 , 老板或运营同学经常需要看客户活跃 , 留存 , 流失情况 。 今天 , 就重点聊一下【如何计算客户的留存率?】
留存即客户在完成第一次交易后 , 在后续的日子里 , 是否持续的上来交易 。 如果按月为单位 , 则就是客户首次成交后 , 后续月份的成交比例 。
被观察客户群:某月份首次成交客户 。 后续的留存率都是基于这些客户来计算的 。
月度留存率算法公式:
月度留存率 = 某月份中被观察客户中成交客户数 / 被观察月份的总成交客户数
举个例子:
假设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 `成交`=1group by `月份` , `客户id`1月客户的后续月份留存率:
temp t202001_0= select 202001 as mm, count(`客户id`) as tn from `月新客` where `月份`=202001temp t202001_1= select 202001 as mm, b.`月份`,count(b.`客户id`) as leftnumfrom `月新客户` ainner join `月度成交` b on a.`月份`=202001 and a.`客户id`=b.`客户id`where a.`月份`=202001group 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.mmoutput t202001_2如果你的平台系统支持函数或存储过程 , 则可以把这部分代码写成函数 , 入口参数就是指定月份 , 出口结果就是这个月份的新客在后续月份的留存率数据表 。
如果你的系统不支持函数或存储过程 , 则可以复制这部分代码成后续个月代码 。 最后用union all 关联起来即可 。

    推荐阅读