《2022年用户留存率计算文 .pdf》由会员分享,可在线阅读,更多相关《2022年用户留存率计算文 .pdf(3页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、用户留存率 计算做企 业级报 表的人 经常会遇到留存率的概念。对于不同的 项目,留存率的概念也会有所不同。针对 我所在的手机 应用、手机游 戏 方向的用 户留存率 统计 ,在此做一些 简 要的 说明。用 户留存率 这个概念在网上没有搜到其具体的定义 ,在此仅对 我公司的 计算模式 进行简 要整理:用户留存率是只某一基础用户群在特定的一段时间 内使用某一 应用(游 戏)的比率。需要注意两个概念: 1 、基础用户群:是指按照 给定要求 规范出的特定群体。例如,我们要统计 2 月份二战风 云的日留存, 统计 的基 础用户群是指 2 月 1 日全天使用了二 战风 云 这一游 戏 的所有玩家。 2 、特
2、定的一段 时间 内使用:这个概念 对 不同的人可能有不同的两种理解。一是 连续 的时间内,每天都在使用 该应 用;二是在特定的 时间 段内,不定期的使用该应 用。这里,我们统计 采用的是后者。现 在举例说明该统计 所要达到的效果:第一天第二天第三天第四天第五天第六天第七天访问 量100 110 120 130 140 150 160 留存量100 90 80 70 60 50 40 对于以上数据 进 行说明:我 们以第一天 访问 的总人数 100作为基数 统计 日留存。可以看到,虽然每天的用 户访问 量是在 递增的,但是用 户留存量是 递减的(用户留存当然是越来越少喽!)。其 计算方法我想大家
3、也就可以看出一二了吧!对,第二天的留存量是指在第一天基数的 100 人中,有 90 人第二天又使用了该应 用;而第三天的留存量是指在第一天基数的100 人中,有 80 人第三天又使用了该应 用,以此 类推可能有人会 问,第三天的 80 人为什么不是以第二天的90 人作 为基数呢 ?我个人 认为 第二种方式在 统计 上是存在弊端的。 举例说明:如果一个用 户第二天没有使用该应 用,但以后的 每天都在使用,在 这种 情况下,我 们可以确定的是: 该用户是活 跃 用户;但如果用第二 种方法 统计的话, 该用户就不会在我 们统计 的数据内。现 就以上所述方法的统计 流程 进行 简单 介绍: 1 、抽取
4、基础数据作 为统计 基数 2 、抽取第二天 访问 数据数据,并以 该数据与抽取的基础数据做交集,得到第二天留存量 3 、用留存量 / 基础数据得出第二天的留存率名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - 4 、以上方法 每 天循 环,提取每天的用 户留存数据一下是用 户日留存的存 储过 程,仅供参考(mysql )CREATE PROCEDURE PRO_REMAIN_USER_BY_DAY(in in_daydateTim
5、e) begin declare Ttimedatetime; declare Tflagint; declare TtemFlagint; declare TdayFlag2 varchar(20); declareTnumint; declare Tnum1 int; declare Tcountint; set in_day=ifnull(in_day,adddate(current_date(),-1); setTcount=(select count(1) from remain_user_data where addTime =in_day ); if Tcount =0 then
6、 insert into remain_user_data(addTime) values(in_day); end if; set Tflag=1; set TtemFlag=0; set Ttime=in_day; CREATE TEMPORARY TABLE tempTable(id bigint ); while Tflag=Ttime and logout_time0 then # 抽取第 Tnum天留存量 set Tnum1=(select ifnull(count(distinct p.player_id),0) from tempTablet join day_logout_n
7、otify p on t.id=p.player_id where p.logout_time=in_day and logout_timeadddate(in_day,1) ); if Tflag=1 then set Tnum=1; end if; set TdayFlag2=concat( data,Tflag); # 计 算留存率并更新 set sqlstr=concat(update remain_user_data set ,TdayFlag2,=,Tnum1/Tnum, where addTime=,concat(¥,DATE(Ttime),¥); prepare stmt from sqlstr; execute stmt; end if; # 时间 加 1 ,循环set Ttime=adddate(Ttime,-1); set Tflag=Tflag+1; end while; drop table tempTable; end; 该存储过 程已 经过测试 ,可以放心使用。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -
限制150内