本题在聚合的基础上需要得出最大值,进行判断。
我第一思路是:在where或者having子句中得出最大值,然而此版本的MySQL不支持在子句中写(limit)。
因此,创建临时表,然后再查询的时候判断:

with a
as(
select u.id,u.name,
sum(g.grade_num)over(partition by g.user_id order by g.grade_num desc)as grade_sum
from user as u,grade_info as g
where u.id=g.user_id
order by u.id)
select * from a
where a.grade_sum=(select max(a.grade_sum) from a) order by a.id;