with a as(
    select
        tvi.author,
        date_format(tuvl.start_time,'%Y-%m') as dt,
        case when tuvl.if_follow=0 then 0 when tuvl.if_follow = 1 then 1 when tuvl.if_follow = 2 then -1 end as fans_bianhua
    from 
        tb_user_video_log as tuvl 
        left join tb_video_info as tvi on tuvl.video_id = tvi.video_id
    where
        year(tuvl.start_time) = 2021
),
b as(
    select
        author,
        dt,
        round(sum(fans_bianhua)/count(*),3) as fans_growth_rate,
        sum(fans_bianhua) as fans_month_bianhua
    from 
        a
    group by 
        author,
        dt
),
c as(
    select 
        author,
        dt as month,
        fans_growth_rate,
        sum(fans_month_bianhua)over(partition by author order by dt) as total_fans
    from 
        b
    order by 
        author,
        total_fans
)
select * from c