玩家在某段时间内注册开始游戏,经过一段时间后,仍然继续游戏的被认作是留存;这部分用户占当时新增用户的比例即是留存率,会按照每隔1单位时间(例日、周、月)来进行统计。顾名思义,留存指的就是“有多少玩家留下来了”。留存用户和留存率体现了应用的质量和保留用户的能力。

次日留存率 首次登陆后第二天登录游戏用户/统计日的注册用户数
三日留存率 首次登陆后第三天登陆过的用户/统计日的注册用户数
七日留存率 首次登陆后第七天登录过游戏的用户/统计日的注册用户数
三十日留存数 首次登陆后第三十天登录过游戏的用户/统计日的注册用户数

留存率 在不同的游戏中 算法不一样

留存率说明

某时间内的新增用户,经过一段时间后,仍继续登录游戏的被认作时留存用户;这部分用户占当时新增用户的比例即是留存率。

例如:
9月5日新增用户200,这200人在6日登录游戏二手游戏卖号的有100人,7日登录有80人,8日登录有50人;
则9月5日次日留存率是50%,3日留存率是40%,4日留存率是25%。

这是我们游戏里的计算方式

这样统计 有科学根据的
比如 哪天 你开广告了 就可以看 他带来的用户质量
还有 这样的留存 数据 也会好看的

  1. -- 登录日志
  2. DROP TABLE IF EXISTS log_login;
  3. CREATE TABLE log_login(
  4. id INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,
  5. player_id INT(11) UNSIGNED NOT NULL,
  6. last_login_time timestamp NOT NULL DEFAULT '2000-01-01 00:00:00',
  7. register_time timestamp NOT NULL DEFAULT '2000-01-01 00:00:00',
  8. PRIMARY KEY (id)
  9. )ENGINE=MYISAM DEFAULT CHARSET=utf8;

复制代码

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

  1. -- 统计留存率
  2. DROP TABLE IF EXISTS stat_remain;
  3. CREATE TABLE stat_remain(
  4. id INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,
  5. dru INT(11) NOT NULL, -- 每日新注册用户
  6. second_day INT(11) DEFAULT NULL,
  7. third_day INT(11) DEFAULT NULL,
  8. seventh_day INT(11) DEFAULT NULL,
  9. thirtieth_day INT(11) DEFAULT NULL,
  10. stat_time timestamp NOT NULL DEFAULT '2000-01-01 00:00:00',
  11. add_time timestamp NOT NULL DEFAULT '2000-01-01 00:00:00',
  12. PRIMARY KEY (id)
  13. )ENGINE=MYISAM DEFAULT CHARSET=utf8;

复制代码

  1. DELIMITER $
  2. -- 统计留存率
  3. DROP PROCEDURE IF EXISTS stat_remain_player$
  4. CREATE PROCEDURE stat_remain_player()
  5. BEGIN
  6. declare i int;
  7. SET i = 1;
  8. 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;
  9. while i<30 do
  10. if (i=1) or (i=2) or (i=6) or (i=29) then
  11. if exists(select * from stat_remain where datediff(curdate(),stat_time) =i) then
  12. 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;
  13. 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;
  14. 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;
  15. 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;
  16. end if;
  17. end if;
  18. SET i = i + 1;
  19. end while;
  20. END
  21. $
  22. DELIMITER ;

复制代码

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

  1. 持久化技术——游戏玩家信息管理(基于 SQLite)

    如果对SQLite还有疑惑(・∀・(・∀・(・∀・*) 不妨先阅读一下之前的一篇文章 https://blog.csdn.net/nishigesb123/article/details/892027 ...

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

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

  3. Springboot毕设项目“阴阳师”游戏玩家社区设计与实现d58pn(java+VUE+Mybatis+Maven+Mysql)

    Springboot毕设项目"阴阳师"游戏玩家社区设计与实现d58pn(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomc ...

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

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

  5. PTA 7-9 游戏玩家

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

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

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

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

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

  8. Android学习——SQLite游戏玩家管理案例

    SQLite游戏玩家管理案例 功能设计 根据我们要展示的数据,设计一个排行榜后台管理功能包括: 1.显示游戏玩家列表,按分数降序 2.管理员可手动修改每个玩家的数据 3.管理员可单击后单独查看一个玩家 ...

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

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

最新文章

  1. java 自带thread分析工具_java自带的jvm分析工具
  2. linux双网卡驱动配置,linux网卡驱动安装、双网卡绑定
  3. 0729------Linux网络编程----------使用 select 、poll 和 epoll 模型 编写客户端程序
  4. java算法----0至9这十个数组成两个三位数和一个四位数
  5. python堆栈与队列_python:用deque实现栈,队列和保存最后的N个元素
  6. (王道408考研操作系统)第二章进程管理-第四节3:死锁处理策略之检测和解除
  7. opensource项目_来自Opensource.com的开放硬件资源
  8. JS小游戏-极速快跑
  9. 数据挖掘十大算法之C4.5
  10. C++ 获取std::vector 长度 大小
  11. 性能调优分析之:Oracle SQL执行计划报告生成器
  12. iOS APP 逆向安全杂谈
  13. 小程序分销商城源码系统+搭建教程+前后端完整版
  14. Android 视频压缩
  15. 什么是DNS云解析?云解析有哪些特点?
  16. css第八课:文本属性(字体,颜色属性)
  17. screenX、client X、pageX、offsetX、layerX
  18. 老毛桃PE系统,迁移系统机械到固态硬盘
  19. 【视频演示】B站视频演示
  20. Git :error: You have not concluded your merge (MERGE_HEAD exists)

热门文章

  1. u盘正常接入后计算机无法看到,u盘在我的电脑显示不出来怎么办-处理u盘在我的电脑无法显示的方案 - 河东软件园...
  2. cad2010背景怎么调成黑色_买皮蛋时,黄色和黑色的有什么区别?哪种更好?看完涨知识了...
  3. 后缀的形容词_巧记形容词后缀 第三弹
  4. 21-爬虫之scrapy框架selenium的使用08
  5. 南昌大学c程序计算机作业,南昌大学计算机作业第二章答案
  6. lesson1-python3运算符
  7. 分治:分治和动态规划的区别,二分检索递归和迭代方式实现
  8. java并发编程之美-阅读记录10
  9. Python 日期时间相关
  10. 第三章 线性表---顺序存储结构