#rank select t.user_id , name,grade_num from ( select user_id , grade_num ,rank()over(order by grade_num desc ) as rn from ( select user_id, sum(case when type ='reduce' then -1*grade_num else grade_num end ) as grade_num from grade_info group by user_id )t )t inner join user u on t.user_id = u.id where rn =1