题解 | #获得积分最多的人(三)#
获得积分最多的人(三)
http://www.nowcoder.com/practice/d2b7e2a305a7499fb310dc82a43820e8
知识点
- 和上一题代码思路一模一样就是求和的时候使用case when函数,当type是reduce的时候是grade_num*-1否则就是grade_num,其他都一样。
代码
with a as(
select distinct u.id,u.name,
sum(case type when 'reduce' then grade_num * -1
else grade_num end) over(partition by g.user_id)as grade_sum
from user as u
join grade_info as g
on u.id=g.user_id)
select * from a
where a.grade_sum=(select max(a.grade_sum) from a)
order by a.id