题目要求:计算用户的平均次日留存率
解题思路:
1)用户的平均次日留存率=用户次日不重复的回答人数/用户前一日不重复的回答人数
2)需要2个表,前一日回答问题表为主表,左连接次日回答问题表,
这样主表中有前一日回答问题的所有用户,左连接次日回答问题表,主表前一日日期再次日没回答的就是null
3)计算人数,使用count + distinct即可
select 
    round(count(distinct qpd2.device_id,qpd2.date)/count(distinct qpd1.device_id,qpd1.date),4) as avg_ret
from question_practice_detail qpd1
left join question_practice_detail qpd2
on qpd1.device_id=qpd2.device_id
and qpd2.date =DATE_ADD(qpd1.date, INTERVAL 1 day) ;

qpd2.date =DATE_ADD(qpd1.date, INTERVAL 1 day) 这限制语句表示,次日回答问题表的日期=前一日回答问题表的日期+1天
注意点,要同时对用户id和日期去重