如何取中位数:分组排序&每组总数为n,a,b序号相加为n+1,且序号连续或相等。取a

【c.rk<d.rk+2 and c.rk+2>d.rk】 rk是正数,c.rk-d.rk<2会超出范围,出错,不能相减

select c.id,c.job,c.score,c.rk
from
(select id,a.job,score,rk,cnt from
(select id,job,score,row_number() over(partition by job order by score desc) as rk
from grade)a join (select job,count(score) cnt from grade group by job)b
on a.job=b.job)c,
(select id,a.job,score,rk,cnt from
(select id,job,score,row_number() over(partition by job order by score desc) as rk
from grade)a join (select job,count(score) cnt from grade group by job)b
on a.job=b.job)d
where c.rk+d.rk=c.cnt+1 and c.job=d.job and c.rk<d.rk+2 and c.rk+2>d.rk
order by c.id