计算用户的平均次日留存率

大致思路:我们只需要关系每天中该用户是否答题,所有我们需要去掉重读的行,将去重的数据作为新的一张表,两次利用该表实现左连接,连接的条件就是时间差为1天。

select
    COUNT(q2.device_id) / COUNT(q1.device_id) AS avg_ret
from
    (select distinct device_id,date from question_practice_detail) as q1
left join
    (select distinct device_id,date from question_practice_detail) as q2
on q1.device_id=q2.device_id and q2.date=DATE_ADD(q1.date,interval 1 day)