--SQL server

select b.author,CONVERT(varchar(7),a.start_time,120) as month,ROUND(SUM(CASE WHEN a.if_follow=1 then 1

when a.if_follow = 2 then -1 else 0 end)*1.0/COUNT(1),3) as fans_growth_rate,

SUM(SUM(CASE WHEN a.if_follow=1 then 1

when a.if_follow = 2 then -1 else 0 end)) over (partition by b.author order by CONVERT(varchar(7),a.start_time,120)) as total_fans

FROM tb_user_video_log a

LEFT JOIN tb_video_info b

ON a.video_id = b.video_id

where year(a.start_time) = 2021

group by b.author,CONVERT(varchar(7),a.start_time,120)

order by b.author,total_fans

--mySQL

select b.author,date_format(a.start_time,'%Y-%m') as month,ROUND(SUM(CASE WHEN a.if_follow=1 then 1

when a.if_follow = 2 then -1 else 0 end)*1.0/COUNT(1),3) as fans_growth_rate,

SUM(SUM(CASE WHEN a.if_follow=1 then 1

when a.if_follow = 2 then -1 else 0 end)) over (partition by b.author order by date_format(a.start_time,'%Y-%m')) as total_fans

FROM tb_user_video_log a

LEFT JOIN tb_video_info b

ON a.video_id = b.video_id

where year(a.start_time) = 2021

group by b.author,date_format(a.start_time,'%Y-%m')

order by b.author,total_fans