服了我做的好复杂 with u as (select user_id,date,dense_rank()over(partition by user_id order by date)as rk from login l), a as (select user_id,date,rk from u group by user_id,date,rk), b as (select x.user_id,x.date as start,y.date as end from a x left join a y on x.user_id=y.user_id and x.rk=y.rk-1 where x.rk=1) select round(sum(if(datediff(end,start)=1,1,0))/count(*),3) as p from b

京公网安备 11010502036488号