select aa.id,aa.name,bb.sum_grade from user aa join
(
#找到了id跟总分
select a.user_id,a.add0-b.reduce0 sum_grade
from
(
#先分为add跟reduce
select user_id,sum(grade_num) add0
from grade_info
where type='add'
group by user_id
) a left join
(
#生成reduce
select a.id,ifnull(sum(b.reduce0),0) reduce0
from user a left join
(select user_id,sum(grade_num) reduce0
from grade_info
where type='reduce'
group by user_id
)b
on a.id=b.user_id
group by a.id
) b
on a.user_id=b.id
group by a.user_id
)
bb on aa.id=bb.user_id
where bb.sum_grade=(
select max(t2.sum_grade)
from
(
#找到了id跟总分
select a.user_id,a.add0-b.reduce0 sum_grade
from
(
#先分为add跟reduce
select user_id,sum(grade_num) add0
from grade_info
where type='add'
group by user_id
) a left join
(
#生成reduce
select a.id,ifnull(sum(b.reduce0),0) reduce0
from user a left join
(select user_id,sum(grade_num) reduce0
from grade_info
where type='reduce'
group by user_id
)b
on a.id=b.user_id
group by a.id
) b
on a.user_id=b.id
group by a.user_id
)t2
)
;