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

获得积分最多的人(三)

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

select user_id as id
,name
,grade_num
from (
select
    user_id
    ,sum(
        case
            when type = 'add' then grade_num
            when type = 'reduce' then - grade_num
            else 0
        end
    ) as grade_num
    ,dense_rank() over (        
        order by
            sum(
                case
                    when type = 'add' then grade_num
                    when type = 'reduce' then - grade_num
                    else 0
                end
            )
    DESC ) as rk
from
    grade_info
group by
    user_id
) t join user u on t.user_id = u.id 
where rk = 1
order by id ASC;

全部评论

相关推荐

10-10 01:10
已编辑
深圳大学 测试开发
面了100年面试不知...:六月到九月,四个项目一个实习,是魔丸吗
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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