select
b.id
,b.name
,c.总积分
from
    (select
    user_id
    ,总积分
    ,dense_rank()over(order by 总积分 desc) as de_rk
    from
        (select
        user_id
        ,sum(if(type='add',+grade_num,-grade_num)) as 总积分
        from grade_info
        group by 1) a
    )c
      join user b
    on c.user_id=b.id
where de_rk=1
group by 1,2
order by b.id;