题解 | #每个创作者每月的涨粉率及截止当前的总粉丝量#
每个创作者每月的涨粉率及截止当前的总粉丝量
http://www.nowcoder.com/practice/d337c95650f640cca29c85201aecff84
SELECT author, DATE_FORMAT(start_time,'%Y-%m') AS month, ROUND((SUM(IF(if_follow=1,1,0))-SUM(IF(if_follow=2,1,0))) / COUNT(start_time),3) AS fans_growth_rate, SUM( #外面这个sum是把里面的每个月涨跌数全部再加起来,得到总粉丝数。,如果只有一层SUM粉丝总数始终不正确 SUM(IF(if_follow=2,-1,if_follow)) #里面的sum计算的是每个创作者每个月的涨跌粉丝数,这里只能用2去判断,因为还有粉丝数没有发生变化的时候 ) OVER (PARTITION BY author ORDER BY DATE_FORMAT(start_time,'%Y-%m')) #开窗函数,按照start_time实现累计 ORDER BY是默认的开窗函数,按照author实现分区 AS total_fans FROM tb_user_video_log l LEFT JOIN tb_video_info i ON l.video_id=i.video_id WHERE YEAR(start_time)=2021 GROUP BY author, month ORDER BY author ASC, total_fansz 这个有参考其他人的写法,之前从来没有用过partition by这个方法,查了资料MySQL中好像没有这个,Oracle中有