select 
  id,
  name,
  t1.grade_num
from 
  (
    select 
      user_id,
      sum(case when type='add' then grade_num else concat('-',grade_num) end) as grade_num,
      dense_rank() over(order by sum(case when type='add' then grade_num else concat('-',grade_num) end) desc) as rk
   from 
     grade_info
   group by 
     user_id
  ) as t1
join
  user as u 
on 
  t1.user_id=u.id
where 
  rk=1
order by 
  id;