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

获得积分最多的人(三)

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-15 17:56
商洛学院 运维工程师
点赞 评论 收藏
分享
优秀的大熊猫在okr...:多益:此贼,必有同谋,按律,该当连坐!
你不能接受的企业文化有哪...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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