select user_id
       ,name
       ,grade_sum
from (
    select t1.user_id
           ,t1.name
           ,sum(t1.score) as grade_sum
           ,DENSE_RANK() over (order by sum(t1.score) desc ) as ranking
    from (select     a.user_id
                     ,b.name
                     ,case when a.type = "add" then 1*a.grade_num
                           when a.type = "reduce" then (-1)*a.grade_num
                           end as score 
          from grade_info as a
          join user as b
          on a.user_id = b.id) t1
    group by t1.user_id
             ,t1.name)  t2
where ranking = 1;