题解 | #统计活跃间隔对用户分级结果#
统计活跃间隔对用户分级结果
https://www.nowcoder.com/practice/6765b4a4f260455bae513a60b6eed0af
select
user_grade,
round(num / sum(num) over (), 2) as ratio
from
(
select
user_grade,
count(distinct uid) as num
from
(
select
uid,
case
when first_log < 7 then '新晋用户'
when last_log < 7 then '忠实用户'
when last_log < 30 then '沉睡用户'
else '流失用户'
end user_grade
from
(
select
uid,
datediff (
(
select
max(out_time)
from
tb_user_log
),
min(in_time)
) as first_log,
datediff (
(
select
max(out_time)
from
tb_user_log
),
max(in_time)
) as last_log
from
tb_user_log
group by
uid
) as tb_log
) as tb_grade
group by
user_grade
) as tb_grade_num
order by
ratio desc
