select
    uid
    ,days_window
    ,round(ct/all_day*days_window,2) avg_exam_cnt
from(
    select 
        uid
        ,max(ifnull(days_window,0))+1 days_window
        ,sum(ifnull(days_window,0)) sum_days
        ,avg(all_day)+1 all_day
        ,avg(ct) ct
    from(
        select 
            uid
            ,datediff(start_time,lead_time) days_window
            ,datediff(max_time,min_time) all_day 
            ,count(*) over(partition by uid) ct
        from(
            select 
                uid
                ,start_time
                ,lead(start_time,1) over(partition by uid order by start_time desc) lead_time 
                ,max(date(start_time)) over(partition by uid) max_time
                ,min(date(start_time)) over(partition by uid) min_time
            from exam_record
            where year(start_time) = 2021
        )a
    )b
    # where max(ifnull(days_window,0)) >=1 
    group by uid                                                        
)c
where days_window > 1
order by days_window desc,avg_exam_cnt desc