/**
 1. 数据只涉及到device_id 和 date, 并且同一天同一个用户可能会有两次答题,需要过滤
 	我们先将其他数据隐藏, 简华思考
 select distinct q1.device_id, q1.date from question_practice_detail q1
 对查询出来的q1表进行一次自链接,数据就变为了device_id, date, device_id(1), date(1)
 
 2. q1,q2无论哪一个都需要全部表的数据,使用左连接或右连接都可以
 过滤条件为 2.1 用户必须为同一个,即q1.device_id = q2.device_id
           2.2 q2的日期必须为q1的后一天 q2.date = DATE_ADD(q1.date, interval 1 day)


以用户小明在6.4日这一天来说,如果小明这天登录了且6.5日没登录则这一列为
		小明,true,null,null
	如果小明6.5日登录了
		小明,true,小明,true
		
这时就会发现,当第二天没登录时,q2的数据为null
			当第二天登录时,将会有第二天的数据

如此就发现count(q1.device_id) 会获取到所有用户去重下的登录次数总和
		 count(q2.device_id) 则为所有用户第二天仍然登录的次数总和
于是count(q1.device_id) / count(q2.device_id) 就是平级第二天登录概率

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