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

获得积分最多的人(三)

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

第一步 做累计分
第二步 连接用户表和查询出来的累计分表
第三步 用where筛选积分最大值 
select u.id,u.name, gs.grade_sum
from user as u
join (
#这个就是累计分表
       select user_id,sum( 
                          #用case如果是add就是+grade_num,如果是负的就是-grade_num
                          case when type='add' then grade_num*1
                          else grade_num*(-1)
                           end
                          ) as grade_sum
      from grade_info
      group by user_id
     ) as gs
on u.id= gs.user_id
#用where筛选积分等于最大值的情况
where gs.grade_sum=(
                       select max(gs1.grade_sum) 
                       from (
                             select user_id,sum( 
                                                 case when type='add' then grade_num*1
                                                 else grade_num*(-1)
                                                 end
                                               ) as grade_sum
                             from grade_info
                             group by user_id
                            ) as gs1
                   )
order by id;
全部评论

相关推荐

11-02 09:49
已编辑
货拉拉_测试(实习员工)
热爱生活的仰泳鲈鱼求你们别卷了:没事楼主,有反转查看图片
点赞 评论 收藏
分享
10-15 16:27
门头沟学院 C++
LeoMoon:建议问一下是不是你给他付钱😅😅
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务