case when... then... else ...end 创建新列

获得积分最多的人(三)

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

with t as(
    select
        u.id,
        name,
        case when g.type='reduce' then grade_num*(-1) else grade_num end grade_num 
    from user u
    right join grade_info g on u.id=g.user_id
),
t1 as(
    select
        distinct id,
        name,
        sum(grade_num) over(partition by id) grade_num
    from t
),
t2 as(
    select
        *,
        rank() over(order by grade_num desc) r
    from t1
)
select id,
    name,
    grade_num
from t2
where r=1
order by id

全部评论

相关推荐

不愿透露姓名的神秘牛友
08-26 16:29
已编辑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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