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

获得积分最多的人(二)

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

select u.id, u.name, B.grade_num
from (
    select gi.user_id, sum(case when `type` = 'add' then grade_num*(1) else grade_num*(-1) end) as grade_num,
    dense_rank()over(order by sum(case when `type` = 'add' then grade_num*(1) else grade_num*(-1) end) desc) as rk
    from grade_info gi 
    group by gi.user_id) as B
    join user u on B.user_id = u.id 
where rk = 1
order by u.id 

与官方题解相比,多考虑了type加减分的情况,而不是只考虑加分的情况。

全部评论
没想到,获取积分最多的人(三)也是跟这个一样的代码就能通过了
点赞 回复 分享
发布于 05-23 12:20 广东

相关推荐

评论
点赞
收藏
分享

创作者周榜

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