全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析师(CDA)专版
1084 0
2022-05-11

作者:潘彼得

本文为「心中有数」CDA征文作品

是产品的用户经理、产品运营的用户使用率,在产品情况下的价值确实可以估量一个较高的存留时间、等等。 ,及时了解用户的留存、流失趋势,及时帮助产品做更好的功能:新的用户策略也可以调整,新用户运营流程的运营当量低的时候,不是需要调整的活动活动策略对老旧留存的时候,是不是某种产品的活动率或者当用户的功能问题低,用户不方便而导致流失等等……

今天,就给大家分享下如何用SQL实现留存率的计算,以及日常工作中如何分析留存率这个指标。

01、什么是留存率
留存用户是指用户在APP产生行为后,在固定的第N天继续访问或使用APP的用户。比例。

用户留存率很有:新客留存率、老客留存率购买功能有效利用用户留存率、留存率或时间等为用户的使用率,通常计算的间隔次日、3日、7日、30日、60日,根据业务不同的需要可以选择不同的计算方式和时间间隔,重点是要和产品负责人以及运营人员对指标的好坏。

本次的留存率是关于新客的留存率,计算公式:第N日新客留存率=某日的新注册用户在第N日内访问APP的新注册用户数/某日的新注册用户总数。

次日新客留存率(第1日新客留存率):指APP后续有访问APP的行为的留存/注册APP当天的新注册用户总数。

第3天新客户注册后的第3天新客户访问率:当天APP过户注册用户/APP过户注册总数。

第7天新客户留存率:指注册APP当天的第7个新客户访问/注册APP的留存用户总数。

第30天:指APP第30天内访问APP的新客户留存过户总数/APP当天的新客户留存过注册总数。

02、如何用SQL实现留存率计算

  1. 计算新客留存率用户使用的信息有:身份证、登录日期;

创建唯一的用户ID和用户登录日期表:

CREATE TABLE IF NOT EXISTS user_log
(
'id' int(11) NOT NULL AUTO_INCREMENT,
'operator_id' STRING COMMENT '登录用户ID',
'create_time' DATETIME COMMENT '创建时间'
PRIMARY KEY (`id`) USING BTREE
)
COMMENT '用户登录表'

2.计算过程:

为便于理解代码,下面的步骤分为两步讲解:留存计算,留存用户的计算,日常时间中觉得两个步骤的事务可以将两个进行合并。

前期:

计算用户注册APP日期、登录APP日期、登录APP日期距离注册APP日期的天数差

CREATE view IF NOT EXISTS view_retention_rate AS
SELECT t2.operator_id as “用户ID”
,to_date(register_day) as “日期注册日期”
,login_day as “登录日期”
,datediff(login_day,register_day) AS “登录时间距离注册的天数”
FROM (
(
SELECT DISTINCT operator_id
,to_date(create_time) AS login_day
FROM user_log
) t1
LEFT JOIN (
SELECT operator_id
,min(to_date(create_time)) AS register_day --用户访问APP的最短时间即为首次注册时间
FROM user_log
GROUP BY operator_id
) t2
开启 t1.operator_id = t2.operator_id
)
;

如下:可以发现用户1注册日期在2020年11月10日,最近登录日期在20219月20日,留存达314天。

干货 |  如何用SQL做留存率分析
第二步:

利用已经计算出的时间计算用户留存率。

例如,想要计算用户的日留存率,只需在计算时间的计算结果表存入登记时间间隔登记日期的天数=1的数据,想要计算的用户7天的留存率,只需要在计算结果表上监控登录时间距离注册日期<=7的记录,代码如下:

SELECT (DISTINCT a.operator_id) as "注册日期"
,COUNT(DISTINCT a.operator_id) AS "当天新增人总数"
,COUNT(DISTINCT CASE WHEN leave_days=1 THEN.operator_id ELSE NULL END) AS "次日留存用户数"
,COUNT(0 时的不同情况AND leave_days<=7 THEN a.operator_id ELSE NULL END) AS "第7日留存用户数"
,COUNT(DISTINCT CASE WHEN 7AND leave_days<=30 THEN a.operator_id ELSE NULL END)as "第30日留存用户数"
,COUNT(DISTINCT CASE WHEN 30AND leave_days<=60 THEN a.operator_id ELSE NULL END) as "第60日留存用户数"
,round(COUNT(DISTINCT CASE WHEN become_days=1 THEN a.operator_id ELSE NULL END)/count(DISTINCT a.operator_id), 2) AS "次日留存率"
,round(COUNT(DISTINCT CASE when 0并且保持天数<=7 然后a.operator_id else null end)/count(distinct a.operator_id),2) as "7日留存率"
,round(COUNT(DISTINCT CASE when 7并且保持天数<=30 然后a.operator_id else null end)/count(distinct a.operator_id),2) as "30 日留存率"
,round(COUNT(DISTINCT CASE when 30并且保持天数<=60 然后a.operator_id else null end)/count(distinct a.operator_id),2) as "60 日留存率"
FROM view_Retention_rate a
GROUP BY a.register_day
;

结果输出如下:

干货 |  如何用SQL做留存率分析
到这里,一个简单的新客留存情况就完成啦!

03、分析留存率之所以下降的原因

本次计算的是几个新客留存率,因此我们要分析的就是客留存率下降的原因,分析原因可以从新角度:出发人、产品、运营方式。

新客留存率较高的有:

新客户不是产品的目标客户
新客户纯属为了薅羊毛
新手引导引导引导
新客户没有很好的产品功能,导致对新客户没有很好的产品体验
产品界面对新手不友好
产品活动特性
……

04、如何提高留存率

想要提高留存率的建议建议下药,“对留存率,或通过持续存在的持续率进行分析,”“对留存率,或通过持续存在的长期存在的产品确实有效吗?

针对这句话,给大家一些参考的方式:

用户画像:如果没有发现目标的数据,但有留存的目标,但可以查看下用户判断是否是产品的目标,可以进一步了解用户的用户画像,如果是用户调查等方式,可以进一步了解用户画像留存;
产品活动运营:通过活动刺激用户,提升用户活跃性和留存率;
更多的朋友圈消息:合适的用户消息、用户在良好的时间推进活动、发布消息比拍摄效果好;
产品是否具有使用习惯的功能,用户可以随时在发现时、在核心功能使用时、在核心功能的第一次结合等指标时,功能是否可以启动,产品功能是否可以在一次访问功能上正常访问产品功能的真正改善。
……

05、一个好的留存率标准是什么

这样一个普遍的指标,不同的模式或业务场景下有不同的标准。前Airbnb和内部增加团队负责人Lenny Rachitsky 事件brite首席产品官Casey Winters对Uber、Evernote、ServeyMonkey、Twitter、Facebook、Notion等20多款产品的增长专家进行了采访,得出了一些结论。

根据业务类型的不同,各位专家认为留存率好的标准分别是:

6个月用户留存率标准应该是:

干货 |  如何用SQL做留存率分析
12个月的收入留存率标准应该是:

干货 |  如何用SQL做留存率分析
以上只是建议供大家参考,实际业务场景中还需要根据业务需求或体量进行适当的参考调整。

      相关帖子DA内容精选

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群