select avg(stay) as avg_ret from ( select device_id, date, if(date_add(date, interval 1 day) = lead(date) over(partition by device_id order by date), 1, 0) as stay from question_practice_detail group by device_id, date ) as qpd2