题解 | #计算用户的平均次日留存率#
计算用户的平均次日留存率
https://www.nowcoder.com/practice/126083961ae0415fbde061d7ebbde453
select count(distinct nq.device_id,datee)/count(distinct q.device_id,date) from question_practice_detail q left join (select distinct device_id, date_add(date,interval 1 day) as datee from question_practice_detail) as nq on nq.device_id=q.device_id and nq.datee=q.date
1.date_add函数是MySQL中的一个函数,用于在日期上进行加法运算。它的语法如下:
date_add(date, interval value unit)
其中,date是要进行运算的日期,value是要加上的数值,unit表示要加上的时间单位。
2.根据题目需求,先将表分裂开,第一天来的,和第二天来的,再计算最终表得到结果
分裂合并:
select * from
(select distinct device_id,date from question_practice_detail) as q
left join
(select distinct device_id, date_add(date,interval 1 day) as datee from
question_practice_detail) as nq
on nq.device_id=q.device_id and nq.datee=q.date
计算:
select count(distinct nq.device_id,datee)/count(distinct q.device_id,date)
from question_practice_detail q
left join
(select distinct device_id, date_add(date,interval 1 day) as datee from
question_practice_detail) as nq
on nq.device_id=q.device_id and nq.datee=q.date