题解 | #2021年11月每天新用户的次日留存率#
2021年11月每天新用户的次日留存率
https://www.nowcoder.com/practice/1fc0e75f07434ef5ba4f1fb2aa83a450
WITH user_t AS ( SELECT uid, DATE_FORMAT(in_time,'%Y-%m-%d') AS timea FROM tb_user_log UNION SELECT uid, DATE_FORMAT(out_time,'%Y-%m-%d') AS timea FROM tb_user_log ), user_t2 AS ( SELECT DISTINCT *, ROW_number() OVER (PARTITION BY uid ORDER BY timea) AS user_day FROM user_t ) SELECT uf.timea AS dt, ROUND(COUNT(ut2.uid) / COUNT(uf.uid), 2) AS uv_left_rate FROM( SELECT * FROM user_t2 WHERE user_day =1 ) AS uf LEFT JOIN user_t2 ut2 ON ut2.uid = uf.uid AND DATE_ADD(uf.timea, INTERVAL 1 day) = ut2.timea WHERE DATE_FORMAT(uf.timea, '%Y-%m') = '2021-11' GROUP BY uf.timea ORDER BY dt
注意找的是新用户第二天的留存率,我用了row_number 唉 太不精简了
我看有大佬直接用的min(date) 感觉好神/(ㄒoㄒ)/~~
https://blog.nowcoder.net/n/73d6ca1d59314da6986453ff76be8d38