描述
题目:现在运营想要查看用户在某天刷题后第二天还会再来刷题的平均概率。请你取出相应数据。
示例:question_practice_detail
根据示例,你的查询应返回以下结果:
思路是:
1. 需要知道两天都上线的人数
2. 需要知道第一天上线的人数
做法:
1. 用datediff区分第一天和第二天在线的device_id
2. 用left outer join做自表联结
3. 用distinct q2.device_id,q2.date做双重去重,找到符合条件的当天在线人数
代码:
SELECT
COUNT(distinct q2.device_id,q2.date)/count(DISTINCT q1.device_id,q1.date) as avg_ret
from question_practice_detail as q1
left outer join question_practice_detail as q2
on q1.device_id=q2.device_id and DATEDIFF(q2.date,q1.date)=1