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

考试分数(五)

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

#所有grade信息+排名信息
select
    id
    ,b.job
    ,score
    ,t_rank
from (
         select
             *
              ,row_number() over (partition by job order by score desc) t_rank
         from grade#各岗位排名
         ) b
    left join (
                select
                    distinct
                    job
                    ,max(t_rank+1)over(partition by job)/2 mid_r
                from (
                         select
                             *
                              ,row_number() over (partition by job order by score desc) t_rank
                         from grade#各岗位排名
                     ) a#各岗位排名中位数 注意是整数或小数
                ) c
        on c.job=b.job
where t_rank=floor(mid_r)#中位数左边界
    or t_rank=floor(if(floor(mid_r)=mid_r,mid_r,ceiling(mid_r)))#中位数右边界
order by 1#按id升序

全部评论

相关推荐

达芬骐:一个月入门,一年熟悉,三年精通,五年掌握,十年会用
点赞 评论 收藏
分享
码农顶针:估计让你免费辅导老板孩子的学习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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