看了高赞的妙解,不想写思路了,自己的思路简直弱爆了。
select id, job , score, r from(
select *, ceiling(max_r/2) as start_r,
case when max_r%2=0 then ceiling(max_r/2)+1 else ceiling(max_r/2) end as end_r
from(
select *, 
max(r)over(partition by job) as max_r
from(
select *, row_number()over(partition by job order by score desc) as r
from grade) as tb1
) as tb2
) as tb3
where r=start_r or r=end_r
order by id