用 SQL 分析不同用户群组留存率

一、前言

用户增长对企业非常重要,主要包括: 新增、留存、召回 。留存率就是用户在某段时间内,开始使用某网站或APP,经过一段时间后仍然继续使用,这类群体就认为是留存用户,留存用户的占比即为留存率。N日留存率=N日留存用户数/新增用户数*100%,反应了网站或APP的质量和保留用户的能力。

本文介绍一个实用的分析留存率的方法: Cohort Analysis (群组分析)。就是利用用户分层&用户建模的方法,将新增用户分成一个一个小组,可以按照获客日期来分,或者按照获客渠道来分,或者按照特定用户行为来分。APP的下载量越高并不是说产品就越好,产品若没有很好的留存,花费大量时间和资源来挖掘新客户也将是竹篮打水一场空。群组分析有利于衡量用户在每个漏斗的用户流失节点、用户流失数据,从而帮助你发现产品的用户的行为模式和用户增长点。从本质上讲,群组分析Cohort Analysis为你提供了一种数据驱动的方法,用群组分析Cohort Analysis方法,可以来帮助提高用户留存率。

二、数据介绍

数据来自某网站2009年至2010年的用户登录数据(activity.csv)和用户的注册信息(user.csv)。
为了方便计算我做了修改,部分数据表预览如下:(特殊说明:数据已脱敏)

1、User表 用户的注册信息
列UID代表用户的唯一标志(账户),
列JOINDATE代表用户的注册日期。

2、Activity表 用户登录数据
列ACTION_ID代表每个用户每一次登录的标志,
列DAY代表用户登录的日期。

三、留存分析

1、计算在t1时刻处于活动状态的用户,然后计算在t2时刻留存的用户数

在SQL中可以用selfjoin方法,以次日留存为例:

select * from activity
left join activity as future_info 
on  activity.UID = future_info.UID
and activity.DAY= subdate(future_info.DAY,1);

Join之后的表格每一行都包含了t1和t2时刻的登录情况,t2没有留存则为null。
在这里插入图片描述

2、以次日留存为例,计算去重后的活跃用户数、留存用户数、留存率

根据以上join之后的表格计算:

select
  	activity.DAY, 
  	count(distinct activity.UID) as active_user, # 某日活跃用户,去重
	count(distinct future_info.UID) as retained_user,  # 次日留存用户,去重
 	round(count(distinct future_info.UID)/count(distinct activity.UID),2) as retention_rate #留存率
from activity
left join  activity as future_info
on activity.UID = future_info.UID
and activity.DAY=subdate(future_info.DAY,1)     # 指定留存周期,这里是次日留存所以取相差一天的活动
group by activity.DAY
order by activity.DAY
limit 
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值