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

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

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

计算用户次日留存率,首先附上完整的MySQL运行答案:

select round(count(*)/(select count(distinct user_id) from login),3)
from
(
select user_id, min(`date`) `date`
from login
group by user_id
) a
where (a.user_id, DATE_ADD(a.`date`,INTERVAL 1 DAY)) in (select user_id, `date` from login)

详解如下:

① 首先,按user_id分组,获取每个用户的最早登陆日期。记作表 a 。

(
select user_id, min(`date`) `date`
from login
group by user_id
) a

② 表 a 中的日期+1就是用户第二天登陆的日期。这些日期在login表中可能存在也可能不存在,筛选出存在于login表的数据即为次日留存的数据。

select count(*)
from a
where (a.user_id, DATE_ADD(a.`date`,INTERVAL 1 DAY)) in (select user_id, `date` from login)

③ 由于表 a 在第一步已经去重了。最后只要再比上总用户数量,就可以得到次日留存率。

select count(distinct user_id) from login
#牛客##商分##MySQL##我的实习求职记录##用户留存率#
全部评论

相关推荐

影04714:把图书管理系统那个项目经验内容适当的减少掉,然后改成据为己有不要说团队项目,因为图书管理系统这类常见的谁来了都能独立写出来,提问能圆过来即可
点赞 评论 收藏
分享
11-07 16:07
深圳大学 运营
前端飞升:学长,阿里不是卡双非吗,我深也能去吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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