with a as (select distinct device_id,date as t from question_practice_detail), b as( select distinct device_id,date as t from question_practice_detail ) select round(count(b.device_id)/count(a.device_id),4) as avg_ret from a left join b on a.device_id = b.device_id and date_sub(b.t,interval 1 day) = a.t
二刷 简单