题解 | #计算用户的平均次日留存率#
计算用户的平均次日留存率
http://www.nowcoder.com/practice/126083961ae0415fbde061d7ebbde453
- 首先,计算方式=用户次日继续浏览人数/总浏览用户人数,由于每人一天存在多次浏览,需去重
- 去重:用户需要区分,每个人多次浏览,日期也需要区分,所以distinct device_id,date(如果日期存在时分秒,是否需要格式化?这个问题欢迎大家探讨一下);
- 其次,当日和次日对比采取自连接,此处采取左/右外连接left join,既可以保留主表全部数据t1,也可匹配用户次日也浏览的数据t2;个人觉得不需要再额外再做表连接;
- 然后,代码如下: SELECT COUNT(distinct t2.device_id, t2.date) / COUNT(distinct t1.device_id, t1.date) FROM question_practice_detail t1 LEFT JOIN question_practice_detail t2 ON t1.device_id = t2.device_id and datediff(t1.date, t2.date) = 1