题解 | #获得积分最多的人(三)#巧用sum(if(expr,v1,v2))

获得积分最多的人(三)

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

-- sum(if(expr,v1,v2))的妙用,用好了会提升一些写代码的效率 select id,name,grade_sum from( select u.id,u.name,sum(if(type='add',grade_num,-1grade_num)) as grade_sum, rank()over(order by sum(if(type='add',grade_num,-1grade_num)) desc ) as t_rank from grade_info g left join user u on g.user_id=u.id group by user_id order by grade_sum desc,user_id) a where a.t_rank=1; -- 第一遍的时候没想到用sum嵌套if,多用了一个左连接条件筛选,相比sum嵌套if会稍微复杂一些。

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务