在上一题的基础上在合并表中加入case when
select u.id,u.name,t.grade_sum
from (select user_id,
sum(abs) as grade_sum,
rank()over(order by sum(abs) desc) as a
from (select *,
(case type
when 'add' then grade_num
else grade_num*(-1)
end) as abs
from grade_info) c
group by user_id) as t
join user u
on u.id = t.user_id
where t.a = 1
京公网安备 11010502036488号