题解 | #考试分数(五)#
考试分数(五)
http://www.nowcoder.com/practice/b626ff9e2ad04789954c2132c74c0512
看到了评论区的妙解,觉得太赞了,马一下!
# 各个岗位中位数
# 首先计算出科目的人的个数以及分数排名# 计算出排名和个数之间的关系。(科目的总人数+1)/2 与排名之间的关系为作差绝对值小于1
select g.id,g.job,g.score,g.row_num
from (select id,job,score
,count(score) over (partition by job) as num
,row_number() over(partition by job order by score desc ) AS row_num
from grade)g
where ABS(g.row_num- (g.num+1)/2 )<1
order by g.id