题解 | #每个创作者每月的涨粉率及截止当前的总粉丝量#

每个创作者每月的涨粉率及截止当前的总粉丝量

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中有

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务