with t as
(select
u.id,u.name,
case
when g.type='add' then g.grade_num
else -1*g.grade_num
end as grade_num
from
user u inner join grade_info g
on u.id=g.user_id
)
select
t2.id,
t2.name,
t2.grade_num
from
(select
t1.id,
t1.name,
t1.grade_num,
dense_rank() over(order by t1.grade_num desc) as r
from(
select
t.id,
t.name,
sum(t.grade_num) as grade_num
from t
group by t.id,t.name) t1) t2
where t2.r=1
order by t2.id



京公网安备 11010502036488号