select name, grade_num from( select name, row_number() over (order by grade_num desc) as rk,grade_num from( select u.id,u.name,sum(g.grade_num) over(partition by g.user_id) as grade_num from user u join grade_info g on u.id = g.user_id )a)b where rk=1
思路:先算每个用户的累计得分,再对累计得分进行排名,再取出排名第一的