题解 | #获得积分最多的人(三)#

获得积分最多的人(三)

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

思路:这道题先用case when函数把减分的情况全部*-1,变成负数。

再针对结果,用窗口函数的sum功能,累加,算出所有用户的最终累计分。针对最终累计分,max函数找出所有人里的最高分

with t2 as(

select user_id, sum(newscore) over (partition by user_id) as grade_num

from(

select user_id ,

case when type='reduce' then grade_num*(-1) else grade_num end as newscore

from grade_info)t1 )

select distinct user_id, name,grade_num from t2

join user on t2.user_id=user.id

where grade_num=(select max(grade_num) from t2)

order by user_id

全部评论

相关推荐

2025-12-28 22:19
门头沟学院 Java
不敢追165女神:简历写得毫无特点,你说你要是大二或者大三找寒假实习到暑期实习这段时间,你的简历还能约到面试。但是你是研究生哥,面试官不会因为你是研究生而降低要求,反而会觉得你是研究生才学了这么一点?为什么我不找个同阶段的本科生?
简历中的项目经历要怎么写
点赞 评论 收藏
分享
2025-12-04 15:23
三峡大学 FPGA工程师
不知道怎么取名字_:玩游戏都写到简历上了啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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