with t as (
select user_id,date,lead(date,1)over(partition by user_id) as dtime
from login
# where (user_id,date) in (select user_id,min(date) from login group by user_id)
)
select distinct t2.date,
case when rate is not null then rate
else 0.000
end as p
from
(select date,round(sum(datediff(dtime,date)=1)/count(1),3) as rate
from t
where (user_id,date) in (select user_id,min(date) from login group by user_id)
group by date) t1
right join login t2 on t1.date = t2.date

京公网安备 11010502036488号