select id
, name
, grade_num
from (
select user_id
, sum(real_grade) as grade_num
, DENSE_RANK() OVER(ORDER BY SUM(real_grade) DESC) AS rk
from (
select user_id
, case
when type='add' then grade_num
when type='reduce' then grade_num * (-1)
end as real_grade
from grade_info
) t1
group by user_id
) t2
inner join user as u
on u.id=t2.user_id
where rk=1
order by id asc
!!!嵌套循环

京公网安备 11010502036488号