WITH t1 AS ( SELECT tv.author, SUBSTR(start_time,1,7) AS month, CASE WHEN if_follow = 0 then 0 WHEN if_follow = 1 then 1 WHEN if_follow = 2 then -1 END AS fens, COUNT(author) OVER (PARTITION BY author,SUBSTR(start_time,1,7)) AS bofangliang FROM tb_user_video_log tu LEFT JOIN tb_video_info tv ON tu.video_id = tv.video_id WHERE SUBSTR(start_time,1,4) = '2021' ORDER BY month ASC ), t2 AS ( SELECT author, month, ROUND(sum(fens) / bofangliang,3) AS fans_growth_rate, SUM(fens) fans_month FROM t1 GROUP BY author, month ), t3 AS ( SELECT author, month, fans_growth_rate, sum(fans_month) OVER (PARTITION BY author ORDER BY author,month ROWS UNBOUNDED PRECEDING) AS total_fans FROM t2 ) SELECT * FROM t3 ORDER BY author ASC,total_fans ASC; # 关键在于自定义窗口函数的 PARTITION BY author