题解 | #获得积分最多的人(二)#

获得积分最多的人(二)

http://www.nowcoder.com/practice/b6248d075d2d4213948b2e768080dc92

首先新建个表存积分最大值,方法是根据user_id分组汇总,sum出每组grade_num总和,然后排序选出最大的一个,所以表里只有一个数,把这部分放在子查询也可以。

然后连接user和grade_info两个表以取得所需字段,根据用户分组汇总并得到每组grade_num总和,然后限制grade_num总和等于之前得出的最大总和。

with get_max as
(select sum(grade_num) as max_grade from grade_info
group by user_id
order by max_grade desc limit 1)

select u.id, u.name, sum(grade_num) as grade_sum from
user as u, grade_info as g
where u.id = g.user_id
group by u.id
having sum(grade_num) = (select max_grade from get_max) 
order by u.id
全部评论

相关推荐

不愿透露姓名的神秘牛友
05-29 20:12
点赞 评论 收藏
分享
酷酷我灵儿帅:这去不去和线不线下面说实话没啥关系
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务