SELECT
    author,
    date_format (start_time, '%Y-%m') month,
    round(
        sum(
            case
                when if_follow = 1 then 1
                when if_follow = 2 then -1
                else 0
            end
        ) / count(author),
        3
    ) 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')
    ) total_fans
FROM
    tb_user_video_log log
    join tb_video_info info on log.video_id = info.video_id
where
    year (start_time) = 2021
group by
    author,
    month
order by
    author,
    total_fans