with parameters as(
select
date(max(out_time)) cur_date,
date_sub(date(max(out_time)),interval 6 day) cur_7,
date_sub(date(max(out_time)),interval 29 day) cur_30
from
tb_user_log
)
,user_detail as(
select
uid,
min(in_time) first_open,
max(out_time) last_open,
case when min(in_time)< (select cur_7 from parameters) and max(out_time) >= (select cur_7 from parameters) then "忠实用户"
when min(in_time)>= (select cur_7 from parameters) then "新晋用户"
when max(out_time) >= (select cur_30 from parameters) and max(out_time) < (select cur_7 from parameters) then "沉睡用户"
when max(out_time) < (select cur_30 from parameters) then "流失用户"
end user_grade
from
tb_user_log
group by
1
)
select user_grade,
round(count(1)/sum(count(*)) over(),2) ratio
from user_detail
group by 1
order by 2 desc
eezz



京公网安备 11010502036488号