好像不算困难,比较简单

 select id,name,grade_sum from (
     select user_id ,dense_rank() over(order by grade_sum desc)t_rank ,grade_sum 
     from (select user_id,sum(grade_num) grade_sum from (
             select user_id,
               case type
            when 'reduce'
            then -grade_num
            else grade_num
            end 
            as grade_num
            from grade_info 
     )r1
            group by user_id
     )r2
 )r3
inner join user 
on user_id=id
where t_rank=1
order by id