题解 | 考试分数(五)

考试分数(五)

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

select id,job,score,t_rank
from (select id,job,score,row_number() over (partition by job order by score DESC) as t_rank,
row_number() over (partition by job order by score) as t_rank_d
from grade) a
where t_rank=floor((t_rank+t_rank_d)/2) or t_rank_d=floor((t_rank+t_rank_d)/2)
order by id

正序排和逆序排之后,相加结果即为总数+1,利用这个性质,如果总数为奇数,中位数正序序号=中位数逆序序号=(正+逆)/2;如果总数为偶数,两个中位数位置上分别为:正数序号(正+逆)/2,逆序序号=(正+逆)/2。因此正排,倒排,并用where限制就可以得到所需结果。

全部评论

相关推荐

牛客52811839...:实习要写出来业务和产出,你这写的像流水账没人看。项目经历也没有,换个极简简历试试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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