用子函数先把加减的分数搞对,然后在窗口函数就好了
select u.id,u.name,t.grade_sum from (select user_id, sum(num) as grade_sum, rank()over(order by sum(num) desc) as a from (select user_id, case when type="add" then grade_num*1 else grade_num*-1 end as num from grade_info) g group by g.user_id) as t join user u on u.id = t.user_id where t.a = 1;