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

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

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

全部评论

相关推荐

点赞 评论 收藏
分享
11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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