select id,name,grade_sum from (select user_id,grade_sum,rank() over(order by grade_sum desc) as tk from (select DISTINCT user_id,sum(case when type='add' then grade_num else -grade_num end) over(partition by user_id) grade_sum from grade_info order by grade_sum desc)t1 )t2join us...