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

获得积分最多的人(二)

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

思路如下: 由于和上一题不同,本题中得分最多的人不再是一个,所以不好再用limit 但可以使用子查询得到最高的分数作为where条件

(select max(a) from 
(select sum(grade_num) a from grade_info 
group by user_id)as r)

进而仍然是用 distinct 加开窗,并排序,找到所有用户的分数排序 最后再从user表中找到姓名

select user_id,name,grade_sum from 
(select distinct user_id,sum(grade_num) over(partition by user_id)
as grade_sum from grade_info order by grade_sum desc)as t,user u
where grade_sum=(select max(a) from 
                 (select sum(grade_num) a from grade_info 
                group by user_id)as r)
      and u.id = t.user_id
全部评论

相关推荐

牛至超人:您好,京东物流岗了解一下吗?负责精加工食品的端到端传输
点赞 评论 收藏
分享
01-15 13:45
门头沟学院 Java
牛客92772631...:boss招聘挂岗位是要花钱的,花了钱不挂白不挂,别那么焦虑,但是也要做好跳槽的准备
找实习记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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