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

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

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##我的实习求职记录##用户留存率#
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司7个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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