题解 | #获得积分最多的人(三)#
获得积分最多的人(三)
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刷题笔记,有思路的讲解,不过比较简单,可以稍微启发你一下,留给你一些思考的空间。