select t.date,ifnull(round(count(distinct t2.user_id)/count(t1.user_id),3),0) as p
from login t left join login t1 on t.id=t1.id 
and (t1.user_id,t1.date) in (select user_id,min(date) from login group by user_id)
left join login t2
on t1.user_id=t2.user_id and t1.date=t2.date-1
group by t.date