题解 | #计算用户的平均次日留存率#
计算用户的平均次日留存率
https://www.nowcoder.com/practice/126083961ae0415fbde061d7ebbde453
- 完整代码
SELECT AVG(flag) avg_ret FROM ( SELECT device_id, DATE, ( SELECT IF(COUNT(*)>0,1,0) FROM question_practice_detail qp2 WHERE qp2.device_id = qp1.`device_id` AND datediff(qp2.date, qp1.date)=1 ) as flag -- flag标记的是这个device_id在date日的次日是否会回访 FROM question_practice_detail qp1 GROUP BY device_id, DATE ) as b;
第二个select
查询的结果如下图
flag字段可以标记该行记录记载的用户和日期的后一天,是否会有回访记录,因为有可能有两条回访答题记录,所以用if将数字转换成0或者1