with cte as (
select uid,vid,unix_timestamp(end_time)-unix_timestamp(start_time)  as secends,
               date(start_time)          as dt,
               max(date(end_time))over() as cur_date 
from user_play_log_tb  )

select dt,round(sum(secends)/count(distinct uid),1) as avg_stay_time_len_user,
          round(ifnull(sum(if(secends>=3,secends,0))/count(secends>=3 or null),0),1) as avg_stay_time_len_once     
from cte
where datediff(cur_date,dt)<=6
group by dt
order by dt