select a.grade from (select (select sum(number) from class_grade) as total,grade, ROUND(@a := @a +number) num from class_grade,(select @a:=0)a order by grade) a join (select grade, ROUND(@b := @b +number) num from class_grade,(select @b:=0)a order by grade desc ) b on a.grade=b.grade where (a.num >= a.total/2) and (b.num >=a.total/2)