题解 | 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
-- 先取得中位数位置,之后利用窗口函数给出序号,按照序号是否对应中位数位置进行输出
查看11道真题和解析
