select
u.id,
u.name,
t.grade as grade_sum
from
(
select
user_id,
grade,
rank() over(order by grade desc) as rk
from
(
select
user_id,
sum(if(type='add', grade_num, -1*grade_num)) as grade
from
grade_info
group by user_id
) as sub
) as t
join user as u
on t.user_id = u.id
where rk = 1
order by 1;

京公网安备 11010502036488号