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

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

https://www.nowcoder.com/practice/d337c95650f640cca29c85201aecff84

#每个月 涨粉率=(加粉量 - 掉粉量) / 播放量。结果按创作者ID、总粉丝量升序排序。
#if_follow-是否关注为1表示用户观看视频中关注了视频创作者,为0表示此次互动前后关注状态未发生变化,为2表示本次观看过程中取消了关注。
select author ,
SUBSTRING_INDEX(start_time,"-",2) as month,
round(sum(case
         when if_follow = 1 then 1
         when if_follow = 2 then -1
         else  0 end)/count(if_follow),3) as fans_growth_rate,
sum(sum(case
         when L.if_follow = 1 then 1
         when L.if_follow = 2 then -1
         else  0 end)) over ( partition by I.author order by SUBSTRING_INDEX(start_time,"-",2))as total_fans
from tb_user_video_log as L
left join tb_video_info as I on L.video_id = I.video_id
where year(L.start_time)=2021 and year(L.end_time)=2021
group by I.author,month
order by I.author,total_fans;

这道题目巧妙运用的是窗口函数的使用,

基本语法 sum/avg/... over (partition by [分组的字段 本道习题的话是author] order by [维度上的字段,本道题的话是日期上的累加])

这里的order by 与我们一般意义上的order by 按照........排序 是不一样的

这里我们可以理解为排序序号上的累加。

全部评论

相关推荐

07-16 14:10
门头沟学院 Java
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-16 12:18
点赞 评论 收藏
分享
水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务