使用两个窗口函数作为辅助列,利用辅助列的值找出中位数排名的行
select id,job,score,t_rank from
(select id,job,score,
row_number() over(partition by job order by score desc) as t_rank,
count(*) over(partition by job) count
from grade g) as a
where floor((count+1)/2)=t_rank&nbs***bsp;floor((count+2)/2)=t_rank
order by id