题解 | #获得积分最多的人(三)#巧用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会稍微复杂一些。