需求:
用户留存可以告诉您用户的忠诚度有多高。用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用应用的被认作是留存用户;这部分用户占当时新增用户的比例即是留存率,统计周,月留存率
效果如下:
用户留存可以告诉您用户的忠诚度有多高。用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用应用的被认作是留存用户;这部分用户占当时新增用户的比例即是留存率,统计周,月留存率
效果如下:
解决方案 »
- 求教mysql root@local 为何无法授权
- 大神们求教一个mysql数据库的问题
- mysql 触发器 为什么不能支持中文字段呢?
- 请教高手一个SQL语句的问题
- 怎么使用Java备份和还原Mysql数据库!还望哪位高手指点小弟一下!百分奉上!
- 在mysql中,如何删除两个表中某字段内容相同的记录?
- mysql.root用户及权限问题.
- 请问ems mysql manager如何使用啊 ,有教程下吗?
- 关于页面访问统计存储的MySQL数据库设计构思
- mysql存储emoji表情问题
- 表存在,表数据文件也存在,报ERROR 1146 (42S02): Table 'xxx.xxx' doesn't exist
- 我想在sql中的所有表中查询哪些表存在co1这个字段怎么弄,
我以为最少需要有两个字段:最初使用时间和最后使用时间那么
分组键为 DATE_FORMAT(最初使用时间,'%x%v')
主栏为 DATE_FORMAT(最初使用时间,'%x%v')
宾栏为
sum(if(DATE_FORMAT(最后使用时间,'%x%v')-主栏=0,1,0)) as `新用户`,
sum(if(DATE_FORMAT(最后使用时间,'%x%v')-主栏>=1,1,0)) as `1周后`,
sum(if(DATE_FORMAT(最后使用时间,'%x%v')-主栏>=2,1,0)) as `2周后`,
.....
依次类推
用户id 首次登录或使用时间 dru1 dru3 dru7
首次登录或使用时间 时间戳或日期格式都行,个人喜好;
dru1 dru3 dru7 tinyint类型 default 0,表示次日、三日、七日是否有登录;例如:用户id为100的用户 首次登录时间 2014-02-01;
记录如下:
100 2014-02-01 0 0 0
当id为100的用户在次日即2014-02-02有登录时记录修改为如下:
100 2014-02-01 1 0 0
相对于首次登录时间的那一天有登录,即修改对应字段为1;统计数据 count(*) 总人数,sum(dru1)次日登录人数,sum(dru3)三日登录人数,sum(dru7)七日登录人数 group 首次登录时间
1.其中登录时候的写入逻辑需要优化、我是把数据写入内存处理的、不然并发上来数据库抗不住;
2.只需把对应的次日改成你对应的1周、2周,逻辑思路是一样的;
希望对你有帮助
参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。