题解 | #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
小米集团公司福利 868人发布