select distinct id,name, grade_num from(
select id,name, dense_rank() over (order by grade_num desc) as rk,grade_num
from(
    SELECT 
  u.id, 
  u.name, 
  SUM(CASE WHEN g.type = 'add' THEN g.grade_num ELSE -g.grade_num END) AS grade_num
FROM user u
JOIN grade_info g ON u.id = g.user_id
GROUP BY u.id, u.name
)a)b
where rk=1


知道上一题为啥有重复了,因为用了sum的窗口函数,所以每条都回给出一个结果,应该去使用sum