题解 | #统计活跃间隔对用户分级结果#

统计活跃间隔对用户分级结果

https://www.nowcoder.com/practice/6765b4a4f260455bae513a60b6eed0af

参考了其他大佬的解法  但是那个max(max)over()实在不懂什么意思 就写的比较繁琐
代码如下:
with t1 as (select case
       when datediff(now_dt,min_dt) <= 6 then '新晋用户'
       when datediff(now_dt,max_dt) <= 6 and datediff(now_dt,min_dt) > 6 then '忠实用户'
       when datediff(now_dt,max_dt) between 7 and 29 then '沉睡用户'
       else '流失用户'
       end as user_grade
from (
select uid,(select max(date(out_time)) from tb_user_log) as now_dt,
       max(date(out_time)) max_dt,min(date(in_time)) min_dt
from tb_user_log
group by uid) a)
select user_grade,round(num/cnt,2) as ratio
from (
select user_grade,(select count(1) from t1) as cnt,count(user_grade) num
from t1
group by user_grade) b
group by user_grade
order by ratio desc
全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
积极的小学生不要香菜:你才沟通多少,没500不要说难
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务