with a as (select min(date) as f_t,user_id from login group by user_id), b as( select date,user_id from login ), c as( select date t from login ), d as (select distinct c.t,user_id from a right join c on a.f_t=c.t) select d.t,ifnull(round(count(b.user_id)/count(d.user_id),3),0.000) from d left join ...