思路如下: 由于和上一题不同,本题中得分最多的人不再是一个,所以不好再用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