SELECT author, month,
    ROUND(fans / play_cnt, 3) AS fans_growth_rate,
    SUM(fans) OVER(PARTITION BY author ORDER BY month) AS total_fans
FROM (
    SELECT author, 
        SUBSTRING(start_time, 1, 7) AS month,
        SUM(
            CASE 
            WHEN if_follow = 1 THEN 1
            WHEN if_follow = 0 THEN 0
            WHEN if_follow = 2 THEN -1
            END
        ) AS fans,
        COUNT(start_time) AS play_cnt
    FROM tb_user_video_log
        JOIN tb_video_info
        USING(video_id)
    WHERE YEAR(start_time) = '2021'
    GROUP BY author, month
)res_table
ORDER BY author, total_fans