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

获得积分最多的人(三)

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;
全部评论

相关推荐

06-11 13:34
门头沟学院 C++
offe从四面八方来:我真的没时间陪你闹了
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
程序员饺子:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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