#rank
select t.user_id , name,grade_num 
from 
(

    select user_id , grade_num ,rank()over(order by  grade_num desc ) as rn 
from (
    select  user_id,
            sum(case when type ='reduce' then -1*grade_num else grade_num end ) as  grade_num
    from  grade_info
    group by user_id 
)t

)t inner join user u on t.user_id = u.id
where rn =1