题解 | #统计活跃间隔对用户分级结果#
统计活跃间隔对用户分级结果
https://www.nowcoder.com/practice/6765b4a4f260455bae513a60b6eed0af
-- 用max函数取最大日期作为当天日期来衡量7天的标准,再获取每个用户的最小活跃日期和最大活跃日期。 -- 忠实用户:用户的最小活跃日期与当天日期的差值大于6,且最大活跃日期与当天日期差值小于等于6 -- 新晋用户:用户的最小活跃日期与当天日期的差值小于等于6; -- 沉睡用户:用户的最大活跃日期和当天日期的差值大于6; -- 流失用户:用户的最大活跃日期和当天日期的差值大于29; -- 使用case when函数对以上用户进行统计 select user_grade,round(count(uid)/(select count(distinct uid) from tb_user_log),2) as ratio from ( select uid, (case when datediff(dt,min_dt) > 6 and datediff(dt,max_dt) <= 6 then "忠实用户" when datediff(dt,min_dt) <= 6 then "新晋用户" when datediff(dt,max_dt) > 6 and datediff(dt,min_dt) < 29 then "沉睡用户" when datediff(dt,max_dt) > 29 then "流失用户" else "其他" end ) user_grade from ( select uid,min(date(in_time)) min_dt ,max(date(in_time)) as max_dt ,(select max(date(in_time)) from tb_user_log) as dt from tb_user_log group by uid ) t1 ) t2 group by user_grade order by ratio desc
