关于用户留存率的问题

whb0409 2014-04-10 05:43:43
user 表
uid name 注册时间
11 aa 2014-03-05
12 bb 2014-03-05
13 cc 2014-03-06
14 dd 2014-03-07
...
login 表
uid 登陆时间
11 2014-03-05
11 2014-03-05
...

需要查询每日注册用户的留存 结果显示如下:
日期 新增用户数 次日留存 2日留存 ......
2014-03-05 80 60 50
2014-03-06 70 50 40
2014-03-07 80 66 55
...
...
...全文
177 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
benluobo 2014-04-10
  • 打赏
  • 举报
回复
提供一个方法 如果要列动态产生,必须使用动态SQL语句 部分SQL语句可以如下: select '2014-3-5', (select count(*) from tUser where ct='2014-3-5') LoginNum, count(distinct(t1.uid)) 'one day last', count(distinct(t2.uid)) 'second day last' from tLogin t1, tLogin t2, tUser u1, tUser u2 where t1.uid=u1.uid and t1.lt = adddate(u1.ct,1) and t2.uid=u2.uid and t2.lt = adddate(u2.ct,2) and u1.ct = '2014-3-5' and u2.ct = '2014-3-5' 这里是统计特定一天的两日的留存数据,建议修改你的需求
whb0409 2014-04-10
  • 打赏
  • 举报
回复
引用 5 楼 benluobobo 的回复:
你的查询结果中的时间是从哪天开始? 到哪天结束? 明显今天和昨天所包含的的列是不一样的多,今天包含的列肯定比昨天多一列 怎么处理这个问题?
从第一天有用户注册时 即: select date_format(min(created_at),'%Y-%m-%d') from user 到 2014-04-09
benluobo 2014-04-10
  • 打赏
  • 举报
回复
你的查询结果中的时间是从哪天开始? 到哪天结束? 明显今天和昨天所包含的的列是不一样的多,今天包含的列肯定比昨天多一列 怎么处理这个问题?
whb0409 2014-04-10
  • 打赏
  • 举报
回复
引用 3 楼 whb0409 的回复:
[quote=引用 2 楼 benluobobo 的回复:] 什么叫留存? 是会删除用户么?
某天的次日留存就是某天注册的用户第二天还登陆, 某天的三日留存就是某天注册的用户第三天还登陆, user 表是注册用户表 ,login表是记录登陆信息的表[/quote] 应该是 ‘某天的二日留存就是某天注册的用户第三天还登陆’,
whb0409 2014-04-10
  • 打赏
  • 举报
回复
引用 2 楼 benluobobo 的回复:
什么叫留存? 是会删除用户么?
某天的次日留存就是某天注册的用户第二天还登陆, 某天的三日留存就是某天注册的用户第三天还登陆, user 表是注册用户表 ,login表是记录登陆信息的表
benluobo 2014-04-10
  • 打赏
  • 举报
回复
什么叫留存? 是会删除用户么?
whb0409 2014-04-10
  • 打赏
  • 举报
回复
而且是需要每日的留存,从第一天有用户注册到今天,就是有多少天就要多少列和行

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧