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

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

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

全部评论

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
沐芷凌曦:这简历数分别指望了,数分最基本的SQL能力你的经历是完全没办法佐证的,而且简历排版极其混乱。你的奖项为什么要写具体的项目内容;教育经历为什么要写你在什么课学到了什么东西,这些都应该是在专业技能里的;专业技能里你又把项目的内容放了进来,而且专业技能你又在强调ETL,如果说你确定要把ETL作为你专业技能的主体那你的经历为什么不能重点佐证呢;反而项目经历你项目等于你调用PyEcharts做了一个看板,就是最基本的课程设计,也是没办法佐证你对PyEcharts的掌握程度,而且没有说具体用什么技术做了什么东西中间做了什么最终得到了什么结果。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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