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

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

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

select user_grade,round(count(uid)/max(user_cnt),2)
from
    (select uid,user_cnt
    ,case
    when last_time_diff >= 30 then '流失用户'
    when last_time_diff >= 7 then '沉睡用户'
    when first_time_diff <= 7 then '新晋用户'
    else '忠实用户'
    end user_grade
    from
        (select uid,user_cnt
        ,datediff(max_time,first_time) first_time_diff
        ,datediff(max_time,last_time) last_time_diff
        from
            (select uid,min(date(in_time)) first_time,max(date(out_time)) last_time
            from tb_user_log
            group by uid
            )t1
            left join 
            (select max(date(out_time)) max_time,count(distinct uid) user_cnt from tb_user_log
            )t2
        on 1
        )t3
    )t4
group by user_grade
order by 2 desc

全部评论

相关推荐

03-10 11:23
门头沟学院 Java
鹿LF:计算机面试就跟数学题一样,没什么实际价值,但只能这么筛选,本质是考察你的努力,智力和学习能力
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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