获得积分最多的人(三)

获得积分最多的人(三)

http://www.nowcoder.com/questionTerminal/d2b7e2a305a7499fb310dc82a43820e8

我们知道,全是加的时候是怎么做的,但是出现了减,有点难办了,但是可以看看这个题目的解法:
可以使用一个sum(case when )语句,来逐个统计是加还是减,并统计最后的和,就可以写出如下代码:
select user.id, user.name,t.grade_sum from(
select user_id,sum(case type when 'add' then grade_num else -grade_num end) as grade_sum from grade_info group by user_id
having grade_sum=(select sum(case type when 'add' then grade_num else -grade_num end ) as grade_sum from grade_info group by user_id order by grade_sum desc limit 1) 
) t
join user
on t.user_id=user.id
order by user.id 



全部评论
最后一题,感谢一路有你
1 回复 分享
发布于 2021-08-24 12:40
完结撒花
点赞 回复 分享
发布于 2021-09-24 16:19
最后一题也要向你学习,感谢!
点赞 回复 分享
发布于 2021-12-13 13:20
相比于上一题,这一题增加了reduce,只需要在统计grade_sum时,将减去的情景考虑在内即可。 sum(case type when 'add' grade_num else - grade_num end) as grade_sum
点赞 回复 分享
发布于 2024-10-25 11:12 广东

相关推荐

02-26 16:52
门头沟学院 Java
Lunarloop:董事长亲自到ssob来要IM项目的技术方案来了
点赞 评论 收藏
分享
03-28 22:31
门头沟学院 Java
点赞 评论 收藏
分享
评论
15
2
分享

创作者周榜

更多
牛客网
牛客企业服务