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

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

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

全部评论

相关推荐

01-30 22:03
门头沟学院 Java
用微笑面对困难:我滴妈,【俩月】【实习】【主管】仨debuff吃满了,独立设计开发的项目写了绝大占比的运营板块,你独立开发,那维护、问题复盘、日志更新、bug、策划书全是自己整的? 不建议写那么大,可以从小出发更容易
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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