select id, name, sum_g
from(
select *, rank()over(order by sum_g desc) as r
from(
select distinct id, name, 
sum(grade_num)over(partition by name) as sum_g
from grade_info left join user on grade_info.user_id=user.id) as tb1
) as tb2
where r=1
order by id