with t0 as(select user_id,min(date) as dt from login group by 1)
select distinct l.date,coalesce(p,0.000) as p from login l left join (
select dt,round(count(date)/count(user_id),3) as p from(
select t0.user_id,dt,date from t0 left join login l on t0.user_id=l.user_id and date_add(dt,interval 1 day)=date) t group by 1) tmp on l.date=tmp.dt order by 1