题解 | #牛客每个人最近的登录日期(三)#

牛客每个人最近的登录日期(三)

http://www.nowcoder.com/practice/16d41af206cd4066a06a3a0aa585ad3d

问题:请你写出一个sql语句查询新登录用户次日成功的留存率,即第1天登陆之后,第2天再次登陆的概率,保存小数点后面3位(3位之后的四舍五入)

问题拆解:1.新登陆用户次日留存率=新登陆用户次日留存人数/总新登陆用户人数

2.总新登陆用户人数(分母) =求出所有的新用户数量

select count(distinct user_id)from login

3.根据userid分类后取每个userid对应date的最小值,可以得出每个新登陆用户

select user_id, min(date) as date1 from login group by user_id

4.第3步新生成表格重命名re和原始表格login链接,限定条件id=id,login表格中的date=新用户登陆第一天的时间再加上一就能得到第二天留存的用户数,外面再加上count可以得到计算留存率的分子。

5.整合以上4步,再加上round四舍五入即可。

总的代码如下:

SELECT round(c1/(select count(distinct user_id) from login),3) AS p 
FROM (select count(l.date) c1
		FROM login l
		JOIN (select user_id, min(date) AS date1 
        		FROM login 
        		GROUP BY user_id) AS re
		ON l.user_id=re.user_id 
        WHERE l.date=date_add(date1,interval 1 DAY)) e1

全部评论

相关推荐

昨天 16:26
已编辑
河北科技学院 Java
勇敢的牛油不服输:2800-300那不等于2500一个月吗兄弟们
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务