with t1 as ( select a.name, (case when b.type = 'add' then b.grade_num else -b.grade_num end ) as grade_change from grade_info as b left join user as a on a.id = b.user_id ) select name, sum(grade_change) as grade_num from t1 group by name order by grade_num DESC limit 1;