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

考试分数(五)

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

with
    t1 as (
        select *,
               row_number() over (partition by job order by score desc ) as t_rank,
               count(*) over (partition by job)                          as total
        from
            grade
    ) #用窗口函数构建新表,添加两列t_rank和total总数
select
    id,
    job,
    score,
    t_rank
from
    t1
where
      total % 2 = 1
  and t_rank = round(total / 2, 0) #总数为奇数
union all
select
    id,
    job,
    score,
    t_rank
from
    t1
where
      total % 2 = 0
  and (t_rank = round(total / 2, 0) or t_rank = round(total / 2 + 1, 0))#总数为偶数
order by
    id
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:48
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务