select sum(if(day_diff=1,1,0))/count(distinct device_id, date) as avg_ret from(select device_id, date, timestampdiff(day,lag(date,1)over(partition by device_id order by date),date)day_difffrom question_practice_detail)t1