在上一题的基础上在合并表中加入case when

select u.id,u.name,t.grade_sum
from (select user_id,
             sum(abs) as grade_sum,
             rank()over(order by sum(abs) desc) as a
      from (select *,
                  (case type
                   when 'add' then grade_num
                   else grade_num*(-1)
                   end) as abs
            from grade_info) c
      group by user_id) as t
join user u
on u.id = t.user_id
where t.a = 1