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

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

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

SELECT user_grade, ROUND(COUNT(uid) / MAX(user_count), 2)  ratio
FROM (
    SELECT uid, user_count,
        (CASE 
            WHEN leave_day >= 30 THEN '流失用户'
            WHEN leave_day >= 7 THEN '沉睡用户'
            WHEN come_day < 7 THEN '新晋用户'
            ELSE '忠实用户'
        END) AS user_grade
    FROM (
        SELECT uid, user_count,
            TIMESTAMPDIFF(day, max_out, td)  leave_day,
            TIMESTAMPDIFF(day, min_in, td)  come_day
        FROM (
            SELECT uid,
                MAX(DATE(out_time))  max_out,
                MIN(DATE(in_time))  min_in
            FROM tb_user_log
            GROUP BY uid
        ) AS in_out
        LEFT JOIN (
            SELECT MAX(DATE(out_time))  td,
                COUNT(DISTINCT uid)  user_count
            FROM tb_user_log
        ) AS td_count
        ON 1=1
    )  user_info
)  grade
GROUP BY user_grade
ORDER BY ratio DESC;

活跃间隔=当前时间-最新的登出时间;

新晋用户(近七日新增)=当前时间-第一次登入时间<7

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
点赞 评论 收藏
分享
05-25 10:45
门头沟学院 Java
Frank_zhan...:没实习一个项目肯定不够,可以再做一个轮子,技术栈再补一个mq,微服务,整体再换个简历模板,暑期尽量再找一个日常实习
无实习如何秋招上岸
点赞 评论 收藏
分享
龙珠传说:nb,公务员解约不需要支付违约金吧
点赞 评论 收藏
分享
“校招”、“3-5年经验”
飞花断音:小公司招逆向的不要去,基本上都是搞黑灰产违法的东西
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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