with f as (select u.id , u.name , sum(if(type = 'add', grade_num, -grade_num)) as grade_num from user u inner join grade_info gi on u.id = gi.user_id group by u.id, u.name order by u.id) select id, name, grade_num from (select * , dense_rank() over (order by grade_num desc ) as dr from f) as g where...