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

获得积分最多的人(三)

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

思路:将上题的sum()改成sum(case when)
select
id
,name
,grade_sum
from
(
select
id
,name
,sum(case when type = 'add' then grade_num else -grade_num end) grade_sum
,dense_rank()over(order by sum(case when type = 'add' then grade_num else -grade_num end) desc) rk
from user u
left join grade_info g on u.id = g.user_id
group by 1,2
) a
where rk =1
order by id

sql刷题笔记 文章被收录于专栏

sql刷题笔记,有思路的讲解,不过比较简单,可以稍微启发你一下,留给你一些思考的空间。

全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务