题解 | 每个创作者每月的涨粉率及截止当前的总粉丝量

每个创作者每月的涨粉率及截止当前的总粉丝量

https://www.nowcoder.com/practice/d337c95650f640cca29c85201aecff84

 -- 第一步:获取每条观看记录 + 视频信息 + 月份
WITH
    tongji AS (
        SELECT
            DATE_FORMAT(start_time, '%Y-%m') AS month_video,
            a.if_follow, -- 用户是否关注/取关作者
            a.start_time,
            b.author,
            b.release_time
        FROM
            tb_user_video_log AS a
            LEFT JOIN tb_video_info AS b ON a.video_id = b.video_id
        WHERE
            YEAR(a.start_time) = 2021 -- 限定视频发布于 2021 年
    ),
    -- 第二步:统计每位作者在每月的粉丝净增长 + 播放次数
    monthly_growth AS (
        SELECT
            author,
            month_video AS month,
            SUM(
                CASE
                    WHEN if_follow = 1 THEN 1 -- 关注计 +1
                    WHEN if_follow = 2 THEN -1 -- 取关计 -1
                    ELSE 0
                END
            ) AS net_fans_growth,
            COUNT(*) AS view_count
        FROM
            tongji
        GROUP BY
            author,
            month_video
    )
    -- 第三步:计算粉丝增长率 + 累计净增总粉丝
SELECT
    author,
    month,
    ROUND(net_fans_growth / view_count, 3) AS fans_growth_rate, -- 净增率 = 增长 / 播放量
    SUM(net_fans_growth) OVER (
        PARTITION BY
            author
        ORDER BY
            month 
            ROWS BETWEEN UNBOUNDED PRECEDING
            AND CURRENT ROW
    ) AS fans_total_till_now -- 截止当前的累计净增粉丝
FROM
    monthly_growth
ORDER BY author ASC ,fans_total_till_now ASC;


全部评论

相关推荐

码农索隆:竞争压力小,就你一个不用卷
点赞 评论 收藏
分享
05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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