select id, job, score, t_rank from (select *,row_number()over(partition by job order by score desc) t_rank from grade) s where (job, t_rank) in (select job, case when count(*)%2 = 1 then ceil(count(*)/2) else round(count(*)/2) end start from grade group by job) or (job, t_rank) in (select job, case ...