题解 | #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