题解 | #2021年11月每天新用户的次日留存率#
2021年11月每天新用户的次日留存率
https://www.nowcoder.com/practice/1fc0e75f07434ef5ba4f1fb2aa83a450
解题思路:新增用户 = 第一次阅读的用户,直接获取最小进入阅读时间点为新增用户时间点。然后获取次日是否存在进入阅读或者是退出阅读的时间点,存在则存在次日存留,否则不存在次日存留。最后用总的次日存留除以第一次阅读总数得到次日存留率
select first.dt,
round(count(u.uid)/ count(first.uid),2) as uv_left_rate
from
# 获取最先阅读的起始时间点
(select uid
,min(date(in_time)) dt
from tb_user_log
group by uid) first
# 获取整个周期的起始阅读和结束阅读时间点
left join (select uid , date(in_time) dt
from tb_user_log
union
select uid , date(out_time)
from tb_user_log) u
on first.uid = u.uid
and first.dt = date_sub(u.dt,interval 1 day)
where date_format(first.dt,"%Y-%m")='2021-11'
group by first.dt
查看58道真题和解析
