题解 | #考试分数(五)#

考试分数(五)

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

select
    b.id,
    c.job,
    b.score,
    b.t_rank
from
    (
        select
            a.job,
            ceil(count_ / 2) start,
            ceil((count_+1) / 2) end
        from
            (
                select
                    job,
                    count(*) count_
                from
                    grade
                group by
                    job
            ) a
) c
inner join (
    select
        id,
        score,
        job,
        row_number() over (
            partition by
                job
            order by
                score desc
        ) t_rank
    from
        grade
) b 
on c.job = b.job
where
    b.t_rank = c.start
    or b.t_rank = c.end
order by b.id,b.score
  • 利用ceil找出中位数
  • 利用窗口函数得到排名
  • 连接两个表,筛选中位数位置上的信息
全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 17:02
鼠鼠深知pdd的强度很大,但是现在没有大厂offer,只有一些不知名小厂我是拒绝等秋招呢,还是接下?求大家帮忙判断一下!
水中水之下水道的鼠鼠:接了再说,不图转正的话混个实习经历也不错
投递拼多多集团-PDD等公司10个岗位 >
点赞 评论 收藏
分享
缒梦&独舞:这家公司是这样的,去年给我实习offer了,不过也是面着玩儿的,他周六还要去做公益志愿活动
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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