select count(date2) / count(date1) as avg_ret
//平均次日留存率 = 第 n 天相比前一天新增用户数量 / 第一天新增用户数量
//第二天继续刷题平均概率 = 第二天相比第一天继续刷题用户数量 / 第一天总人数
from (
        select 
            distinct qpd1.device_id,
            qpd1.date as date1,
            qpd2.date as date2
        from question_practice_detail as qpd1
    left join 
     (
         select distinct device_id,date
         from question_practice_detail
     ) as qpd2
    on qpd1.device_id = qpd2.device_id
        and date_add(qpd1.date,interval 1 day) = qpd2.date
//第一天 增加一天 后的日期 正好是 第二天
) as qpd_count;