思路如下: 由于和上一题不同,本题中得分最多的人不再是一个,所以不好再用limit 但可以使用子查询得到最高的分数作为where条件

(select max(a) from 
(select sum(grade_num) a from grade_info 
group by user_id)as r)

进而仍然是用 distinct 加开窗,并排序,找到所有用户的分数排序 最后再从user表中找到姓名

select user_id,name,grade_sum from 
(select distinct user_id,sum(grade_num) over(partition by user_id)
as grade_sum from grade_info order by grade_sum desc)as t,user u
where grade_sum=(select max(a) from 
                 (select sum(grade_num) a from grade_info 
                group by user_id)as r)
      and u.id = t.user_id