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 函数,这样就能实现

京公网安备 11010502036488号