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

考试分数(五)

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

如何取中位数:分组排序&每组总数为n,a,b序号相加为n+1,且序号连续或相等。取a

【c.rk<d.rk+2 and c.rk+2>d.rk】 rk是正数,c.rk-d.rk<2会超出范围,出错,不能相减

select c.id,c.job,c.score,c.rk
from
(select id,a.job,score,rk,cnt from
(select id,job,score,row_number() over(partition by job order by score desc) as rk
from grade)a join (select job,count(score) cnt from grade group by job)b
on a.job=b.job)c,
(select id,a.job,score,rk,cnt from
(select id,job,score,row_number() over(partition by job order by score desc) as rk
from grade)a join (select job,count(score) cnt from grade group by job)b
on a.job=b.job)d
where c.rk+d.rk=c.cnt+1 and c.job=d.job and c.rk<d.rk+2 and c.rk+2>d.rk
order by c.id

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务