题解 | SQL270题。
考试分数(五)
https://www.nowcoder.com/practice/b626ff9e2ad04789954c2132c74c0513
select id,job,score,t_rank from( select *,rank() over(partition by job order by score desc) t_rank from grade g left join( select job,floor((count(*)+1)/2) start, floor((count(*)+2)/2) `end` from grade group by job ) l using(job) ) c where t_rank= start or t_rank=`end` order by id -- 先取得中位数位置,之后利用窗口函数给出序号,按照序号是否对应中位数位置进行输出