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

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

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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务