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

考试分数(四)

https://www.nowcoder.com/practice/502fb6e2b1ad4e56aa2e0dd90c6edf3c

#找中位数的范围
select
    job
    ,floor(mid_r)  _start#中位数左边界
    ,floor(if(mid_r=floor(mid_r),mid_r,ceiling(mid_r))) _end#中位数右边界
from (
         select
            distinct
             job
            ,(max(r)over(partition by job)+1)/2 mid_r#注意要分组讨论
         from (
                  select
                      *
                       ,row_number()over(partition by job order by score) r
                  from grade#各岗位分数升序
              ) a#各岗位中位数 注意是整数或小数
     ) b
order by 1#按job升序
#floor(?)向下取整
#ceiling(?)向上取整
#max(?)over(partition by ?)分组取最大
#row_number()over(partition by ? desc)分组降序,序号连续不重复

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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