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

获得积分最多的人(二)

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

本题我的思路是采用两次子查询。

select u.id,u.name,b.ag from  ---
(select a.ui an,a.sum_g ag,dense_rank()over(order by a.sum_g desc) dr from
(select DISTINCT user_id ui,sum(grade_num)over(partition by user_id) sum_g
from grade_info) a) b --- 表a为第一层子查询,用于获取各用户的累计新增积分;
表b为第二层子查询,用于对表a获取的累计新增积分进行排序。
 join user u on b.an = u.id --- 将获取的表b与user表按用户id进行连接
 where b.dr=1 --- 获取累计积分为第一名的用户
 order by u.id --- 是最终结果按用户id升序排列
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 12:11
点赞 评论 收藏
分享
06-12 10:50
门头沟学院 Java
你的不定积分没加C:我怎么在学院群看到了同样的话
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 11:31
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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