select
author,
month,
round(fans_add/num,3) fans_growth_rate,
sum(fans_add) over (partition by author order by month) as total_fans
from
(
select
author,
date_format(start_time,"%Y-%m") as month,
sum(
case
when if_follow=2 then -1
when if_follow=1 then 1
else 0
end
) fans_add,
count(*) num
from tb_user_video_log a left join tb_video_info b on a.video_id = b.video_id
where date_format(start_time,"%Y")='2021'
group by author,month
)t
order by author,total_fans
看这个题目第一眼:抽象不好懂,第二眼:if_follow为1是关注,0是不变,2是取关,一下就明白了了,这里就是要sum,第三眼:截止当月的总粉丝量,意味着要用开窗函数累加!sum + over (partition by 粉丝加减量)+ ordet by 月份!,开写! MD错了,为什么,第四眼:哦注释里写了要按照author和月份month排序,有点小坑,改了一下过了

京公网安备 11010502036488号