SELECT
    u.id,
    u.name,
    t.grade_num
FROM
    user u
    JOIN (
        SELECT
            user_id,
            SUM(
                CASE
                    WHEN type = 'add' THEN grade_num
                    ELSE - grade_num
                END
            ) grade_num
        FROM
            grade_info
        GROUP BY
            user_id
    ) t ON u.id = t.user_id
WHERE
    t.grade_num = (
        SELECT
            MAX(grade_num)
        FROM
            (
                SELECT
                    user_id,
                    SUM(
                        CASE
                            WHEN type = 'add' THEN grade_num
                            ELSE - grade_num
                        END
                    ) grade_num
                FROM
                    grade_info
                GROUP BY
                    user_id
            ) m
    )
ORDER BY
    u.id;
    select t1.id,t1.name,t0.grade as grade_sum
from(
    select user_id,grade,rank()over(order by grade desc) as t
    from(
        select user_id,sum(if(type='add',grade_num,-1*grade_num)) as grade
        from grade_info
        group by user_id
        ) a0
) t0
join user as t1
on t0.user_id = t1.id
where t=1