存在一个表:
输出新登录用户次日成功的留存率,即第一天登录后。第二天再次登录的概率。
代码:
思路:(第一天登录的新用户并且第二天也登录的用户)/(总用户)即为新登录用户的次日成功的留存率总用户:
每个用户第一天登陆的日子:
在第一天登录的新用户并且第二天也登录的用户,以及第二天的日期:
最后使用count (distinct *) 可以得到各个部分的人数。
新登用户数输出每个日期登录新用户个数:
每个日期里面用户登录的数目:
使用where字句找出新用户,思路是如果选取的日期正好等于用户登录的最小日期,而且用户id相同时,那么肯定就是这个日期登录的新用户:
输出:
2020-10-13没有新用户登录,应该输出为0的,这个语句却没有输出。但是login表的日期是完整的,所以我们考虑将login表当主表,上面查出来的表左连接到主表,顺序输出,并使用ifnull语句将null变成0,最后再加上一个order by语句,就可以得到题目想要的结果了:
新用户的次日留存率
统计一下每个日期新用户的次日留存率:
先算出每天的新用户中有多少个第二天还登陆了(当天时间 – 第一次登录时间差值为1 )
算出每天有多少个新用户:
将上面两步得出的表格进行连接,然后做除法算比率。(注意:0不能为分母要用case when 处理)
End.
作者:Blues
本文为转载分享,如果涉及作品、版权和其他问题,请联系我们第一时间删除(微信号:lovedata0520)
更多文章前往首页浏览http://www.itongji.cn/
- 我的微信公众号
- 微信扫一扫
- 我的微信公众号
- 微信扫一扫
评论