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

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

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

题目分析:

第一个需要解决的地方是每个月状态2相当于掉粉,状态1相当于涨粉,这里不能用if去做,因为有多个状态,所以用case when去处理。

第二个需要解决的就是,我们需要计算每个月截止当前的粉丝量,这里自然地想到用窗口函数去处理即可,这里窗口函数需要去partition by author如果这样处理的话,如果有多个作者就会混乱。

SELECT author,DATE_FORMAT(DATE(end_time),'%Y-%m') AS month,
round(SUM(case when if_follow=1 then 1 
    when if_follow=2 then -1
   else 0
   end)/ COUNT(author), 3),
sum(SUM(case when if_follow=1 then 1 
    when if_follow=2 then -1
   else 0
   end)) over(partition by author order by DATE_FORMAT(DATE(end_time),'%Y-%m'))
total_fans
FROM tb_user_video_log JOIN tb_video_info USING(video_id)
WHERE YEAR(end_time)=2021
GROUP BY author,month
ORDER BY author,total_fans
全部评论
你好,请问为啥我写的跟答题区的思路和代码都一样,但是一直提示Expression #4 呢,答题区直接复制过去的就可以
2 回复 分享
发布于 2022-03-16 22:27
窗口函数不是在group by之后运行的吗,为什么group by author,month之后partition by author还有用啊
2 回复 分享
发布于 2022-03-18 18:06
这题根据题意状态只有0,1,2,是可以使用IF的,IF(if_follow = 2,-1,if_follow),2是掉粉,所以-1
9 回复 分享
发布于 2022-02-11 12:23
DATE_FORMAT(DATE(end_time),'%Y-%m') 可以改成 date_format(start_time,'%Y-%m') date()函数没必要
8 回复 分享
发布于 2022-04-17 12:06
因为一个是单月统计 一个是截止到当前的汇总 窗口函数是把单月新增累加一起
6 回复 分享
发布于 2021-12-03 23:17
请问这个为啥要sum两次呢?只在窗口函数中放sum为啥不行?
1 回复 分享
发布于 2021-12-02 16:08
请问为啥不用left join?left join 和inner join 结果为啥不一样
点赞 回复 分享
发布于 2021-12-22 16:10
请问涨粉率为什么是除以count(author)
点赞 回复 分享
发布于 2021-12-30 15:59
请问为什么这里都以end_time为基准 而不是release_time 感谢
点赞 回复 分享
发布于 2022-01-23 18:39
双层sum:能否这样理解,第一层是累计规则,第二层是把这种累计规则按照author分组
点赞 回复 分享
发布于 2022-01-27 17:58
为什么不在group by以后再筛选2021年的,而是在分组前就筛选2021, 这样累计数还包括2021年以前的粉丝数吗?试了下在group by 后面用having year(month)=2021 运行后显示没有数据 又是为啥呢
点赞 回复 分享
发布于 2022-03-16 10:53
可以用if
点赞 回复 分享
发布于 2022-03-23 11:04
为啥计算粉丝数用sum,而不是用count distinct ?不用根据id去重吗
点赞 回复 分享
发布于 2022-04-06 15:45
根据题目举例,total_fans应该只计算涨粉,而不考虑掉粉的数据,所以两个case when应该不一致,但是所有的答案好像都默认二者是一致的,是不是题目解释的有问题?
点赞 回复 分享
发布于 2022-04-19 17:54
细节问题: round(SUM(case when if_follow=1 then 1 when if_follow=2 then -1 else 0 end)/ COUNT(author), 3)后面应该要有一个as fans_growth_rate
点赞 回复 分享
发布于 2022-05-19 16:14
Sum 为什么在窗口函数按月累计求和啊
点赞 回复 分享
发布于 2022-08-08 11:49
播放量为什么是count(author)?
点赞 回复 分享
发布于 2022-08-21 04:36 法国
if(if_follow=2,-1.if_follow)
点赞 回复 分享
发布于 2023-02-24 15:58 江苏

相关推荐

头像
10-22 19:18
上海大学 后端
jopajhhdjwnqk:水印都叠杀人书了
点赞 评论 收藏
分享
沉淀一会:**圣经 1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
39 8 评论
分享
牛客网
牛客企业服务