好像不算困难,比较简单
select id,name,grade_sum from ( select user_id ,dense_rank() over(order by grade_sum desc)t_rank ,grade_sum from (select user_id,sum(grade_num) grade_sum from ( select user_id, case type when 'reduce' then -grade_num else grade_num end as grade_num from grade_info )r1 group by user_id )r2 )r3 inner join user on user_id=id where t_rank=1 order by id