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

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

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

select

    user_grade,

    round(count(uid)/max(user_cnt),2) as ratio

from

(

    select

        uid,

        user_cnt,

        case "忠实用户" when frist_dt < 7_ago and last_dt between 7_ago and nt

        case "新晋用户" when frist_dt between 7_ago and nt

        case "沉睡用户" when last_dt between 30_ago and 7_ago

        case "流失用户" when last_dt < 30_ago else null end as user_grade

    from

    (

    select

        uid,

        nt,

        user_cnt,

        frist_dt,

        last_dt,

        date_sub(nt, interval 6 day) as 7_ago, # 七天时间点

        date_sub(nt, interval 29 day) as 30_ago # 一个月时间点

    from

        (

        (

                (

                    select

                uid,

                date(max(out_time)) as last_dt

                from tb_user_log

                group by uid

                ) as aa

            # 每个用户的最后一次

            left join

                (

                    select

                    date(max(out_time)) as nt,

                    COUNT(DISTINCT uid) as user_cnt

                from tb_user_log

                ) as bb

            # 最近时间

            on 1

        ) as tb_4 left join

        (

            select

                uid,

                date(min(in_time)) as frist_dt

            from tb_user_log

            group by uid

            # 每个用户的第一次

        ) as b_ using(uid)

        ) as tb_1

    ) as tb_2

) as tb_3

group by user_grade

order by ratio desc

全部评论
你拿到数分的offer了嘛
点赞 回复 分享
发布于 2023-06-17 19:07 内蒙古
我也不懂 但是好厉害
点赞 回复 分享
发布于 2023-06-17 19:06 内蒙古
不知道哪里有问题呀,有大神看看吗
点赞 回复 分享
发布于 2023-03-21 19:48 香港

相关推荐

05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-05 04:14
已编辑
真烦好烦真烦:看着感觉好强啊,这都过不了吗
投递字节跳动等公司7个岗位 面试中的破防瞬间
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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