最难的一个题目了:
select date ,ifnull(round( sum(case when (user_id,date) in ( select user_id,min(date) from login group by user_id ) and (user_id,date) in ( select user_id,DATE_ADD(date,INTERVAL -1 DAY) from login ) then 1 else 0 end)/ sum(case when (user_id,date) in ( select user_id,min(date) from login group by user_id ) then 1 else 0 end) ,3),0) p from login group by date order by date
思路:主要用到SQL68 牛客每个人最近的登录日期(三)和SQL69 牛客每个人最近的登录日期(四)中的代码,我们要知道分子和分母分别是什么
分母:新用户
分子:新用户且第二天还在的
还要注意用ifnull函数。