我们知道,全是加的时候是怎么做的,但是出现了减,有点难办了,但是可以看看这个题目的解法:
可以使用一个sum(case when )语句,来逐个统计是加还是减,并统计最后的和,就可以写出如下代码:
select user.id, user.name,t.grade_sum from(
select user_id,sum(case type when 'add' then grade_num else -grade_num end) as grade_sum from grade_info group by user_id
having grade_sum=(select sum(case type when 'add' then grade_num else -grade_num end ) as grade_sum from grade_info group by user_id order by grade_sum desc limit 1) 
) t
join user
on t.user_id=user.id
order by user.id