题解 | 考试分数(五)

考试分数(五)

https://www.nowcoder.com/practice/b626ff9e2ad04789954c2132c74c0513

select temp2.id, temp2.job, grade.score, rn as t_rank
from (
    select id, job, score, rn, (cnt+1)/2 as middle,
           case when rn=(cnt+1)/2 or rn=floor((cnt+1)/2) or rn=ceil((cnt+1)/2) then 1 else 0 end as flag
    from
        (
            select id, job, score,
                   row_number() over (partition by job order by score desc) as rn,
                   count(1) over (partition by job) as cnt
            from grade
        ) temp
     ) temp2 join grade on temp2.id=grade.id
where flag=1
order by temp2.id;

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务