题解 | #获得积分最多的人(二)#子查询+分组聚合筛选解决,比较好理解!
获得积分最多的人(二)
http://www.nowcoder.com/practice/b6248d075d2d4213948b2e768080dc92
1.求出用户总积分
2.求出用户总积分最高的用户积分
3.对用户总积分表进行筛选,总积分等于最高积分的就筛选出来
4.连接user表
select t2.user_id,name,s
from (select user_id,sum(grade_num) s -- 求出用户总积分
from grade_info
group by user_id
having s=(select max(t1.total) -- 求出用户总积分最高的用户积分
from (select user_id,sum(grade_num) total
from grade_info
group by user_id
) as t1
)
) as t2,user
where t2.user_id=user.id
order by t2.user_id
