select t3.id ,t3.name ,t3.grade_num from( select t1.id ,t1.name ,sum(grade_num) as `grade_num` ,rank() over (order by sum(grade_num) desc) as rank_ from user t1 inner join grade_info t2 on t1.id = t2.user_id group by 1,2 ) t3 where t3.rank_ = 1 order by t3.id