题解 | #每天的日活数及新用户占比#
每天的日活数及新用户占比
https://www.nowcoder.com/practice/dbbc9b03794a48f6b34f1131b1a903eb
这么写大家觉得可以吗,会不会显得太烦琐了
#统计每天的日活数,涉及跨天所以用Union把in_time与out_time连起来
with table1 as
(select
uid, date_format(in_time, '%Y-%m-%d') as date
from tb_user_log
union
select
uid, date_format(out_time, '%Y-%m-%d') as date
from tb_user_log),
table2 as
(select
count(distinct uid) as active_num,
date
from table1
group by date
),
#每天的新用户个数
##计算每个用户的第一次访问日期,以及每个日期的用户注册数
table3 as
(select
first_active as date,
count(uid) as new_num
from
(select
uid, min(date) as first_active
from table1
group by
uid) as c
group by first_active
)##表连接
select
a.date as dt,
a.active_num as dau,
round(if(b.new_num is null, 0,b.new_num) / a.active_num, 2) as uv_new_ration
from table2 a
left join
table3 as b
on a.date = b.date
order by a.date asc;
