【MYSQL】小白思路
第一步查询出所有日期中新用户的数量
select l.date d,count(t.user_id) c from (select distinct date date from login) l
left join (select user_id,min(date) first_login from login group by user_id) t
on l.date=t.first_login
group by l.date

第二步计算各个日期哦再次登录的人数,思路是逐行比较login中的记录,每条记录date减一后,仍然在第一步的表中,则证明新用户第二天仍然登录
select t1.date d,count(user_id) c from (select distinct date from login) t1 left join 
(select date-1 p,user_id from login where (user_id,date-1) in 
(select user_id,min(date) from login group by user_id)) t2
on t1.date=t2.p
group by t1.date
最后算出比例,并且使用if处理分母为零的特殊情况,最后结果保留三位小数
select b.d,round(if(a.c,b.c/a.c,0),3) from 

(select l.date d,count(t.user_id) c from (select distinct date date from login) l
left join (select user_id,min(date) first_login from login group by user_id) t
on l.date=t.first_login
group by l.date) a

inner join

(select t1.date d,count(user_id) c from (select distinct date from login) t1 left join 
(select date-1 p,user_id from login where (user_id,date-1) in 
(select user_id,min(date) from login group by user_id)) t2
on t1.date=t2.p
group by t1.date) b 

on a.d=b.d