首先读问题:获取积分最多的人 !注意:可能不止一个人 可能好几个人积分doush
选取 id name 总积分 积分排名=1的
select user_id,name,s_grade from
#这个括号里面查询了 id name 总积分 总积分排名
(
select user_id, name,s_grade,DENSE_RANK() over(order by s_grade desc) r_grade
FROM
#括号里面的表查询了 id ,每人总积分
(
SELECT user_id ,sum(grade_num) s_grade
from grade_info
group by user_id
) a
left join
user u
ON a.user_id=u.id
) f
where f.r_grade=1

网友方法 很清晰 ,代码简洁 牛逼

!创建临时表 id name 总分
with tmp_table as (
select t1.id, t1.name, sum(t2.grade_num) as grade_sum
from user as t1 join grade_info as t2
on t1.id = t2.user_id
group by t1.id
)
!再从临时表里面选 id name 总分=最大值得
select id, name, grade_sum
from tmp_table
where grade_sum = (select max(grade_sum) from tmp_table)
order by id;