题解 | #SQL68:新登录用户的次日成功的留存率#

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

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

总用户数很容易统计:

select count(distinct(user_id)) from login

关键是如何查找连续两天都登录的用户数,这里考虑自联结:

select * 
from login t1
left join login t2
on t2.date = date_add(t1.date, interval 1 day)  --按照日期+1天连接
where t1.user_id=t2.user_id  --选出两天都出现的user_id

去重,计算留存率:

select 
    ROUND(count(distinct(t1.user_id)) / (select count(distinct(user_id)) from login),3) as p
from login t1
left join login t2
on t2.date = date_add(t1.date, interval 1 day)
where t1.user_id=t2.user_id
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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