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

获得积分最多的人(二)

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

首先,将用户表与得分表连接,得到用户姓名得分总表,求和与按姓名分配 接着,运用窗口函数,找到排名第一的成绩,注意这里要求是要考虑并列情况,使用的为dense_rank()函数 最后,筛选出所需条件


select b.user_id,b.name,b.sum_g
from 
(   select a.user_id,a.name, a.sum_g
    ,dense_rank()over(order by a.sum_g desc ) as rank_n 
    from 
    (  select user_id,name,sum(grade_num)as sum_g 
       from grade_info g
       left join user u 
       on g.user_id = u.id
       group by user_id 
     )a
    group by 1
 )b
where b.rank_n =1
全部评论

相关推荐

找工作勤劳小蜜蜂:矛盾是没有实习,就是没实战经验,公司不想要,公司不要,你就没有实习,你就进入死循环,另外你的项目不是社会现在有大量岗位存在行业用的,云存储人员早就饱和。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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