with t as
    (select 
        u.id,u.name,
        case
            when g.type='add' then g.grade_num
            else -1*g.grade_num 
            end as grade_num
     from 
        user u inner join grade_info g 
     on u.id=g.user_id
    )

select
    t2.id,
    t2.name,
    t2.grade_num
from
    (select
        t1.id,
        t1.name,
        t1.grade_num,
        dense_rank() over(order by t1.grade_num desc) as r
    from(
        select
            t.id,
            t.name,
            sum(t.grade_num) as grade_num
        from t
        group by t.id,t.name) t1) t2
where t2.r=1
order by t2.id