select 
count(if(datediff(b.date,a.date) = 1,a.device_id,null))/count(if(datediff(b.date,a.date) = 0,a.device_id,null)) avg_ret
from (
        select distinct device_id,date 
        from question_practice_detail
    )a,
    (
        select distinct device_id,date 
        from question_practice_detail
    )b
where a.device_id = b.device_id and a.date <= b.date