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

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

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

难点主要在于计算截止当前的总粉丝量。这一步要使用窗口函数来完成

sum(<column>) over(partition by <partition column> order by <order column>)
  • <column>:要计算总和的列名
  • partition by <partition column>:按照指定的列名进行分区,将数据划分为多个子集,每个子集内的行均有相同的分区键值。在窗口函数中,分区是用来限制透过窗口函数处理的范围的。
  • order by <order column>:按照指定的列名进行排序,控制窗口函数计算总和时的顺序。
SELECT
    author,
    DATE_FORMAT (start_time, '%Y-%m') AS month,
    ROUND(
        SUM(
            CASE
                WHEN if_follow = 1 THEN 1
                WHEN if_follow = 2 THEN -1
                ELSE 0
            END
        ) / COUNT(*),
        3
    ) AS fans_growth_rate,
    SUM(
        SUM(
            CASE
                WHEN if_follow = 1 THEN 1
                WHEN if_follow = 2 THEN -1
                ELSE 0
            END
        )
    ) OVER (
        PARTITION BY
            author
        ORDER BY
            DATE_FORMAT (start_time, '%Y-%m')
    ) AS total_fans
FROM
    tb_user_video_log
    JOIN tb_video_info ON tb_user_video_log.video_id = tb_video_info.video_id
WHERE YEAR(start_time)=2021
GROUP BY
    author,
    month
ORDER BY
    author,total_fans ASC,fans_growth_rate DESC

全部评论

相关推荐

湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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