with question_practice_detail as (
    select distinct device_id,date
    from question_practice_detail
)

select round(count(y.date)/count(x.date),4) as avg_ret
from question_practice_detail x 
left join question_practice_detail y 
on x.device_id=y.device_id and datediff(y.date,x.date)=1