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