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

获得积分最多的人(三)

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

相关推荐

10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务