分析中留存是个非常重要的指标,很多数据分析平台都提供留存数据的web端展现服务

那么,如何基于一个用户行为表,用mysql得到留存数据呢?

基于一个日常的用户行为表(比如登陆,测量等),用mysql直接求得用户的留存情况

这是我一直想做的一件事,之前一直没有好的方案,直到这次成功实践了一次。

我的分析按照月留存进行,掌握原理后,你可以轻松的改为日留存或周留存。

以下是总体思路的一个思维导图:

基础只要一张明细的测量表,记录用户每天的测量情况,包含用户sn测量值和测量时间等 table bak

总体的思路就是:

要得到一张最终的核心表,留存分析的sql代码,可以直接基于这个表运行

tmp_pressure_mea_detail,这个表包含所有需要分析的月份情况,比如2017年1月到2017年12月,用户数是1万,这个表就会有12万行数据.

month ,terminal_sn ,mea_cnt, first_mea_month ,diff_month_first_mea_month

月份,用户sn(用户的唯一标识),该月份的测量次数,diff_month_first_mea_month(当前月份是该用户开始测量月份后的第几个月,)

2017-07, sn001, 13 , 2017-01 ,7

就是指,2017年7月份,用户sn001的测量次数是13次,他开始测量的月份是2017-01,这个月份是他开始测量后的第7个月

当然过程中,会有一些小问题,都需要一个个解决,因为要得到这个最终的核心表,先需要创建几个其他的过程表,特别是t3 cross join的应用

以下代码表示:

每个月的月份,开始测量的用户数,第二个月的留存数,留存率

其他月份,只需要修改diff_month_first_mea_month 的值即可

select first_mea_month ,count(distinct(TERMINAL_SN)) as mea_pat_cnt

, sum(if(diff_month_first_mea_month = 2 and mea_cnt >0,1,0)) as 2ed_retenion_cnt

, concat(round( (sum(if(diff_month_first_mea_month = 2 and mea_cnt >0,1,0)) / count(distinct(TERMINAL_SN))) * 100,0),'%') as retent

from

( select *

from analysis.tmp_pressure_mea_detail

where diff_month_first_mea_month > 0

and mea_cnt is not null -- 等同于mea_cnt > 0

order by terminal_sn ,month

) aa

group by first_mea_month

将完整的sql代码放在网盘,需要的请私信我,看到会回复密码

mysql留存数据表_用mysql统计留存率相关推荐

  1. php mysql清空数据表_如何清空phpmyadmin数据库

    方法一:通过PhpMyAdmin勾选数据表.手动删除 这是一个传统的方法,手动勾选然后删除: 登录PhpMyAdmin,选择你的mysql数据库名进入>点击结构>选择您要删除的数据表 移动 ...

  2. mysql 微博 数据表_推荐:新浪微博,腾讯微博 mysql数据库主表设计

    用户信息表(t_user_info) 字段名称 字节数 类型 描述 User_id 4 uint32 用户编号(主键) User_name 20 Char[20] 名称 Msg_count 4 uin ...

  3. mysql交互式创建表_用mysql语句创建数据表详细教程

    MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...

  4. 如何用mysql创建orders表_《MySQL必知必会》学习笔记

    本书所用的表: 68.png 67.png 66.png 65.png 64.png 63.png 第一章:了解SQL 数据库:保存有组织的数据的容器(通常是一个文件或一组文件). 数据库软件:DBM ...

  5. mysql修复损坏表_在MySQL中,如何修复损坏的表

    本指南旨在作为故障排除资源和诊断MySQL设置的起点. 有时,MySQL表损坏,这意味着发生了错误,并且其中的数据无法读取. 损坏表的一些常见原因是:MySQL服务器在写数据的时候停止.外部程序同时修 ...

  6. mysql 怎么修复表_修复mysql表

    也许很多人遇到过类似Can't open file: '[Table]mytable.MYI' 这样的错误信息,却不知道怎么解决他,下面我们做个介绍, 多数情况下,数据库被破坏只是指索引文件受到了破坏 ...

  7. mysql查看用户名表_在Mysql中如何显示所有用户?

    这是一个mysql初学者经常问到的一个问题,今天我们就带大家看看是如何在Mysql中显示所有用户的.通常我们在mysql中使用SHOW DATABASES可以显示所有的数据库,SHOW TABLES将 ...

  8. mysql auto_increment建表_在mysql表中创建一个ID auto_increment(在事实之后)

    小编典典 例如,这是一个具有主键但不是的表AUTO_INCREMENT: mysql> CREATE TABLE foo ( id INT NOT NULL, PRIMARY KEY (id) ...

  9. mysql双机数据热备份_配置MySQL数据库双机热备份

    1.mysql 数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好 mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中.实现 mysql ...

最新文章

  1. Flink在快手实时多维分析场景的应用
  2. 秒杀应用的MySQL数据库优化
  3. 通过Zookeeper动态感知服务器上下线[案例]
  4. 用python爬网站评论_python爬取携程景点评论信息
  5. js利用HTML5的拖拽API做流程图
  6. DIY Ruby CPU 分析 Part II
  7. php 自定义条件,php如何自定义一个方法
  8. 18、HX1838红外遥控模块控制led
  9. 【伸手党福利】投影仪初学者入门——投影亮度及幕布选择——从入门到精通
  10. C语言---用筛选法求100以内的素数
  11. GIS招聘 | 青海省省直事业单位(含地信、测绘等专业)
  12. 山东春考c语言试题及答案,2020 年山东省春季高考技能考试 信息技术类专业试题...
  13. c#窗体编辑个人简历_3年工作经验.net程序员简历应该怎么写
  14. c#窗体随机点名软件
  15. github上开源iot物联网云平台thingsboard项目,将前段打包成app的方法研究
  16. 虚拟机桥接模式上网,局域网内ping通
  17. Google云计算三大论文中英文版
  18. 用java实现的资源管理器
  19. FL Studio2023中文绿色版编曲宿主软件
  20. Codeforces 1169B Pairs

热门文章

  1. android app防止锁屏_如何控制Android不锁屏
  2. 【PS-海报】地产海报学习笔记
  3. Python学习——绘制世界人口地图
  4. iPhone通话质量和基带有关?2招教你检测手机是什么基带!
  5. D0x-17(anti—Sp17)-3C12/TPGS抗精子蛋白单克隆抗体/维生素E聚乙二醇琥珀酸酯偶联阿霉素研究
  6. win10 蓝牙忽然消失 华硕主板
  7. 算法题---leetcode-1
  8. 计算机学经济管理可以做什么,学管理学后出来做什么 就业方向有哪些
  9. Key Points on Innovation from Peter Drucker
  10. day81_babasport第七天