SELECT a.id,a.job,a.score,a.t_rank FROM (select *,ROW_NUMBER() over(partition by job order by score desc) as t_rank from grade) a left join (select job,FLOOR((COUNT(job)+1)/2) as 'start',ceil((count(job)+1)/2) as 'end' from grade GROUP by job) b on a.job = b.job where a.t_rank>=b.start and a.t_rank<=b.end ORDER by a.id