解法一
1、查询积分增加最高的积分数
select max(grade_sum) as grade_sum from (select user_id,sum(grade_num) as grade_sum from grade_info group by user_id) as a2、将user表与grade_info表连接,按name分组,统计每个用户的积分数,并筛选积分数等于1表的结果的信息
select a.name,sum(grade_num) as grade_sum from user as a join grade_info as b on a.id=b.user_id group by a.name having grade_sum= (select max(grade_sum) as grade_sum from (select user_id,sum(grade_num) as grade_sum from grade_info group by user_id) as a)解法二 窗口函数
1、查询积分最高的用户id和总积分(用窗口函数sum() 对user_id 分组求和 ,然后按照求和结果倒序排序,取排在第一位的值)。
select user_id,sum(grade_num) over (partition by user_id) as grade_sum from grade_info order by grade_sum desc limit 12、1表与user表连接,查询姓名和总积分
select b.name,a.grade_sum from (select user_id,sum(grade_num) over (partition by user_id) as grade_sum from grade_info order by grade_sum desc limit 1) as a join user as b on a.user_id=b.id