select round(count(distinct b.user_id)/count(distinct a.user_id),3) as p
from(
    select user_id,min(date) as min_date
    from login
    group by user_id
) a 
left join(
    select user_id,date_sub(date,interval 1 day) as date
    from login
) b 
on a.user_id = b.user_id and a.min_date = b.date;