题解 | #计算用户的平均次日留存率#
计算用户的平均次日留存率
https://www.nowcoder.com/practice/126083961ae0415fbde061d7ebbde453
思路:
第一天来过,第二天还回来的平均概率
动作连续性,同一个人,第一天,第二天,
1、考虑同一个表两表左关联:device_id 相同 & date差一天
2、表中带着题号,有重复性,需要去重
3、时间函数 date_add(date,interval number type) 或 DATEDIFF(TB.date,TA.date)=1 两个日期相差的天数
4、概率:第二天来过的人数/第一天来过的人数,这里不需要在对人员去重,因为一个人如果连续来,概率是增加的
SELECT COUNT(tb.device_id)/COUNT(ta.device_id) from (SELECT DISTINCT ta.device_id,ta.date from question_practice_detail ta ) ta left join (SELECT DISTINCT ta.device_id,ta.date from question_practice_detail ta ) tb on ta.device_id=tb.device_id and tb.DATE=DATE_ADD(ta.DATE,INTERVAL 1 DAY)