留存率计算公式详解(员工留存率多少合理)

seoxin 09-07 14:53 9次浏览

在电商行业,老板或运营同学经常需要看客户活跃,留存,流失情况。今天,就重点聊一下【如何计算客户的留存率?】

留存即客户在完成第一次交易后,在后续的日子里,是否持续的上来交易。如果按月为单位,则就是客户首次成交后,后续月份的成交比例。

被观察客户群:某月份首次成交客户 。后续的留存率都是基于这些客户来计算的。

月度留存率算法公式:

月度留存率 = 某月份中被观察客户中成交客户数 / 被观察月份的总成交客户数

举个例子:

假设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语法不同,请自行修改。


我是程序员黑洞,涉猎数据分析,程序开发,目前也在学Go语言开发。欢迎关注,留言。

  • 暂无推荐