select id ,name ,total from ( SELECT id ,name ,sum(if(type='add',grade_num,-1*grade_num)) total, rank() over(order by sum(if(type='add',grade_num,-1*grade_num)) desc) t_rank from user u join grade_info g on u.id=g.user_id group by id,name ) t where t_rank=1 order by id
思路:比之前的这里涉及到加减,我们可以用一个sum 函数里面嵌套一个if 或者case when 函数,这样就能实现