select user_id
,name
,grade_sum
from (
select t1.user_id
,t1.name
,sum(t1.score) as grade_sum
,DENSE_RANK() over (order by sum(t1.score) desc ) as ranking
from (select a.user_id
,b.name
,case when a.type = "add" then 1*a.grade_num
when a.type = "reduce" then (-1)*a.grade_num
end as score
from grade_info as a
join user as b
on a.user_id = b.id) t1
group by t1.user_id
,t1.name) t2
where ranking = 1;

京公网安备 11010502036488号