玩家在某段时间内注册开始游戏,经过一段时间后,仍然继续游戏的被认作是留存;这部分用户占当时新增用户的比例即是留存率,会按照每隔1单位时间(例日、周、月)来进行统计。顾名思义,留存指的就是“有多少玩家留下来了”。留存用户和留存率体现了应用的质量和保留用户的能力。
次日留存率 首次登陆后第二天登录游戏用户/统计日的注册用户数
三日留存率 首次登陆后第三天登陆过的用户/统计日的注册用户数
七日留存率 首次登陆后第七天登录过游戏的用户/统计日的注册用户数
三十日留存数 首次登陆后第三十天登录过游戏的用户/统计日的注册用户数
留存率 在不同的游戏中 算法不一样
留存率说明
某时间内的新增用户,经过一段时间后,仍继续登录游戏的被认作时留存用户;这部分用户占当时新增用户的比例即是留存率。
例如:
9月5日新增用户200,这200人在6日登录游戏的有100人,7日登录有80人,8日登录有50人;
则9月5日次日留存率是50%,3日留存率是40%,4日留存率是25%。
这是我们游戏里的计算方式
这样统计 有科学根据的
比如 哪天 你开广告了 就可以看 他带来的用户质量
还有 这样的留存 数据 也会好看的

-- 登录日志
DROP TABLE IF EXISTS log_login;
CREATE TABLE log_login(id INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,player_id INT(11) UNSIGNED NOT NULL,last_login_time timestamp NOT NULL DEFAULT '2000-01-01 00:00:00',register_time timestamp NOT NULL DEFAULT '2000-01-01 00:00:00', PRIMARY KEY (id)
)ENGINE=MYISAM DEFAULT CHARSET=utf8;

log_login的数据在每个玩家登陆的时候产生一条,为了接下去的存储过程执行效率的考虑,冗余了每个玩家的注册时间。

-- 统计留存率
DROP TABLE IF EXISTS stat_remain;
CREATE TABLE stat_remain(id INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,dru INT(11) NOT NULL, -- 每日新注册用户second_day INT(11) DEFAULT NULL,third_day INT(11) DEFAULT NULL,seventh_day INT(11) DEFAULT NULL,thirtieth_day INT(11) DEFAULT NULL,  stat_time timestamp NOT NULL DEFAULT '2000-01-01 00:00:00',add_time timestamp NOT NULL DEFAULT '2000-01-01 00:00:00', PRIMARY KEY (id)
)ENGINE=MYISAM DEFAULT CHARSET=utf8;
DELIMITER $$
-- 统计留存率
DROP PROCEDURE IF EXISTS stat_remain_player$$
CREATE PROCEDURE stat_remain_player()
BEGIN
declare i int;
SET i = 1;  insert into stat_remain(dru,stat_time,add_time) select count(a_qid),date_sub(curdate(),interval 1 day),now() from tb_fish where datediff(now(),add_time)=1;while i<30 do if (i=1) or (i=2) or (i=6) or (i=29) thenif exists(select * from stat_remain where datediff(curdate(),stat_time) =i) then                                                               update stat_remain set second_day=(select (select count(distinct player_id) from log_login where datediff(curdate(),register_time) =i and datediff(date_add(curdate(),interval 1-i day),last_login_time)=0)/(select count(distinct player_id) from log_login where datediff(curdate(),register_time) =i))*100 where datediff(curdate(),stat_time) =i;  update stat_remain set third_day=(select (select count(distinct player_id) from log_login where datediff(curdate(),register_time) =i and datediff(date_add(curdate(),interval 2-i day),last_login_time)=0)/(select count(distinct player_id) from log_login where datediff(curdate(),register_time) =i))*100 where datediff(curdate(),stat_time) =i;  update stat_remain set seventh_day=(select (select count(distinct player_id) from log_login where datediff(curdate(),register_time) =i and datediff(date_add(curdate(),interval 6-i day),last_login_time)=0)/(select count(distinct player_id) from log_login where datediff(curdate(),register_time) =i))*100 where datediff(curdate(),stat_time) =i;  update stat_remain set thirtieth_day=(select (select count(distinct player_id) from log_login where datediff(curdate(),register_time) =i and datediff(date_add(curdate(),interval 29-i day),last_login_time)=0)/(select count(distinct player_id) from log_login where datediff(curdate(),register_time) =i))*100 where datediff(curdate(),stat_time) =i;  end if;
end if;
SET i = i + 1;
end while;
END
$$DELIMITER ;

stat_remain_player 存储过程在每新的一天的0点0分1秒左右去执行,生成stat_remain数据,并对离当天stat_time差距为1天,2天,6天和29天的记录进行更新。

流子

QQ:41157121

转载于:https://www.cnblogs.com/james1207/p/3424015.html

游戏玩家的留存率统计实现相关推荐

  1. 游戏玩家的留存率统计SQL实现

    玩家在某段时间内注册开始游戏,经过一段时间后,仍然继续游戏的被认作是留存:这部分用户占当时新增用户的比例即是留存率,会按照每隔1单位时间(例日.周.月)来进行统计.顾名思义,留存指的就是"有 ...

  2. 游戏玩家的计算机配置,游戏玩家的PC都爱用什么配置?Steam十一月硬件调查数据告诉你...

    [PConline 杂谈]很多人都会为了自己喜欢的游戏,配上一台主机或者升级一下配置,可你知道目前大部分玩游戏的人都用什么样的配置呢?作为目前全球最大的PC游戏游戏平台,Steam会通过对steam用 ...

  3. 游戏大数据分析--游戏玩家

    游戏玩家 1 新增玩家 1.1 新增设备激活:当日新增加的激活设备量.新增玩家账户:当日新增加的玩家帐户数 1.2 玩家转化:安装游戏的玩家中(即激活设备)有注册账户的玩家比例,1人多次注册,只记1次 ...

  4. PTA 7-9 游戏玩家

    某游戏公司年末推出一款新游戏,共设置100层关卡,邀请游戏玩家们内测,根据到达关卡层级对玩家授予不同称号,并对获得神级玩家称号的玩家进行奖励,赠送高级游戏装备一套.已知到达关卡90-100的玩家授予神 ...

  5. python技能排名_Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计

    说实在的个人对游戏并没有多大的兴趣,但唯独对暴雪的Diablo系列很有感情,去年年初开始玩Diablo3,断断续续,感觉最麻烦的是选择技能,每次版本更新可能都有更优的build,这对于我这样的业余玩家 ...

  6. c语言程序游戏玩家管理系统,c语言程序课程设计--游戏玩家管理系统及C语言课程设计_简易计算器.doc...

    湖南涉外经济学院 课程设计报告 课程名称: C语言课程设计 报告题目: 游戏玩家管理系统 学生姓名: ** ** 所在学院: 信息科学与工程学院 专业班级: 电科 学生学号: **** ****** ...

  7. wifi子掩护码_掩护您的后方:游戏玩家的基本网络安全

    wifi子掩护码 As video games have grown more sophisticated since the days of Pong or the original Zork, s ...

  8. 60%游戏玩家虚拟财产曾被盗 QQ号究竟值多少钱?

    QQ号究竟值多少钱?日前在深圳召开的全国网络与知识产权刑事法律保护研讨会上,专家们为虚拟财产是否属于刑法意义上的财产问题争论激烈. 2003年,北京一网络游戏玩家辛苦两年获得的所有虚拟装备都不翼而飞, ...

  9. UTONMOS链游将为GameFi游戏玩家带来更多的可能

    2022年,全球新型冠状病毒疫情尚未彻底消弭,尽管少数国家的隔离措施和防疫规定已开始逐渐放宽,我国也已在疫情防控上估到彻底放开,但人们的生活却远未恢复"常态". 近3年来,世界各国 ...

  10. 金山网盾监测:游戏玩家下载西西游戏外挂会中大量***

    金山网盾监测:游戏玩家下载西西游戏外挂会中大量*** 据金山毒霸安全实验室监测,6月17日,金山网盾云端数据突然监测到西西游戏网的当日外挂下载均报危险.西西游戏网是深受外挂玩家欢迎的游戏外挂下载网站, ...

最新文章

  1. java methode_Java Method.getTypeParameters方法代码示例
  2. 生成对抗网络GAN综述
  3. iPhone开发进阶(9)--- 用SQLite管理数据库
  4. 【jQuery】用jQuery给文本框添加只读属性【readOnly】
  5. 本地yum仓库以及网络版yum的私有仓库详细的安装配置
  6. Java为什么要有堆外内存_作为 Java 开发者,你需要了解的堆外内存知识
  7. SylixOS PCI 驱动 分析--设备枚举
  8. yyuc php,php版微信公众平台实现预约提交后发送email的方法
  9. 软件工程专业知识体系
  10. android netd的工作流程解析
  11. SD卡无法格式化的原因分析
  12. 《X战警:逆转未来》热映 破福斯海外开画纪录
  13. squid高性能代理缓存服务器
  14. 利用Java实现从键盘输入一个double型数,输出该数的整数部分和小数部分
  15. 详解VMware12安装Mac OS X 10.11
  16. 183亿超募,超千亿估值,埃安为什么引发全行业抢投
  17. 阿里巴巴集团全资收购UC优视
  18. 【Python】成功解决 str object has no attribute decode
  19. WIN7主题下载http://bbs.windows7en.com/?fromuid=896008
  20. 安装:Microsoft Project 2010

热门文章

  1. Linux学习(4)vim编辑器的安装使用
  2. Android广播机制(2)
  3. org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘medicinesId
  4. 手机5g什么时候普及_5G手机什么时间普及,现在买4G手机划算吗?
  5. 哈夫曼思维导图,第六章前半段思维导图
  6. Debian Ubuntu/Centos7设置某些软件不自动更新
  7. HTML 5 Canvas 绘制图形图像
  8. 阶段3 3.SpringMVC·_03.SpringMVC常用注解_3 PathVariable注解
  9. 阶段3 1.Mybatis_08.动态SQL_03.mybatis中动态sql语句-foreach和sql标签
  10. P2731 骑马修栅栏 欧拉函数