第一步通过group by 和sum对不用用户的累计积分分组求和,即
 ( select user_id,
          sum(grade_num) as t_num
           from
           grade_info
           group by user_id ) as a
第二步,通过rank()over()函数对第一步的累计积分进行排序,即
select user_id,t_num,
            rank() over (order by t_num desc) as r
        from
            (第一步 ) as b
注:因题目提示有多个积分第一的情况所以,用rank
第三步,将第二步生成的b表和user用join连接,并select 出需要显示的列,即id,  name, b.t_num as grade_num,最后排序,即
  select
    id,
    name,
    b.t_num as grade_num
from
    (
        select
            user_id,
            t_num,
            rank() over (
                order by
                    t_num desc
            ) as r
        from
            (
                select
                    user_id,
                    sum(grade_num) as t_num
                from
                    grade_info
                group by
                    user_id
            ) as a
    ) as b
    join user as u on u.id = b.user_id
where
    b.r = 1
    order by id