SELECT DISTINCT(id),NAME,grade_sum
FROM user
u
LEFT JOIN
(SELECT ,RANK() OVER (ORDER BY grade_sum DESC) r
FROM
(SELECT user_id,SUM(g) OVER (PARTITION BY user_id) grade_sum
FROM
(
SELECT user_id, grade_num,
CASE WHEN type
='add' THEN grade_num ELSE grade_num-1 END g
FROM grade_info) a)b)c
ON u.id
=c.user_id
WHERE r=1
ORDER BY id ASC