with t1 as (
select job,
(case when MOD(count(score), 2) = 1 then CONVERT(count(score)/2, SIGNED INTEGER) else CONVERT(count(score)/2, SIGNED INTEGER) end ) as start,
(case when MOD(count(score), 2) = 1 then CONVERT(count(score)/2, SIGNED INTEGER) else CONVERT(count(score)/2, SIGNED INTEGER)+1 end ) as end
from grade
group by job
),
t2 as (
select id, job, score,
Dense_rank() OVER (PARTITION BY job ORDER BY score DESC) as t_rank
from grade
),
t3 as (
select t2.*
from t1
left join t2
on t1.job = t2.job
and t1.start = t2.t_rank
),
t4 as (
select t2.*
from t1
left join t2
on t1.job = t2.job
and t1.end = t2.t_rank
)
select t3.*
from t3
union
select t4.*
from t4
order by id;