题解 | #日活与每日次日留存率#
日活与每日次日留存率
https://www.nowcoder.com/practice/18b168ada98d4bdb9108444443cea7d3
select
t1.visit_date,
t1.dau,
round(
if (t2.next_day_per is not null, t2.next_day_per, 0),
4
) next_day_per
from
(
select
visit_date,
(count(*)) dau
from
user_visit_log
group by
visit_date
) t1
left join (
select
u1.visit_date visit_date,
(
count(*) / (
select
count(*)
from
user_visit_log
where
visit_date = u1.visit_date
)
) next_day_per
from
user_visit_log u1
join user_visit_log u2 on u1.id = u2.id
and datediff (u2.visit_date, u1.visit_date) = 1
group by
u1.visit_date
) t2 on t1.visit_date = t2.visit_date
