需求:
用户留存可以告诉您用户的忠诚度有多高。用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用应用的被认作是留存用户;这部分用户占当时新增用户的比例即是留存率,统计周,月留存率
效果如下:
用户留存可以告诉您用户的忠诚度有多高。用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用应用的被认作是留存用户;这部分用户占当时新增用户的比例即是留存率,统计周,月留存率
效果如下:
解决方案 »
- Navicat for MySQL 出发器 玄机
- mysql_query()和 mysql_real_query()区别?
- time列类型怎样获取当前时间
- 急求SQL语句
- mysql 同时建立俩个主键和一个AUTO_INCREMENT
- 两个Mysql数据库之间的操作问题
- java连接mysql需要怎样设置?
- 问:在Mysql的数据库中,怎么才可以设置大于255个字符的字段!
- 求sql语句,谢谢!!!
- mysql中表a和表b合并为表c,再将表c恢复至表a,请问如何处理较好
- 表存在,表数据文件也存在,报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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。