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

考试分数(五)

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

思路:首先找出中位数start和end的下标得到t1表 然后对原表进行窗口排序t2 再接着连接t1和t2 条件:job和start=rk 在连接t1和t2条件:job和end=rk注意可能有重复,需要用union去重

select id, t1.job, score, rk from (select job, if(count(job)%2=0,floor(count(job)/2),floor(count(job)/2)+1) as start, floor(count(job)/2)+1 as end from grade group by job order by job)t1 join (select job, id, score, row_number() over(partition by job order by score desc) as rk from grade)t2 on t1.job=t2.job and t1.start=t2.rk union select id, t1.job, score, rk from (select job, if(count(job)%2=0,floor(count(job)/2),floor(count(job)/2)+1) as start, floor(count(job)/2)+1 as end from grade group by job order by job)t1 join (select job, id, score, row_number() over(partition by job order by score desc) as rk from grade)t2 on t1.job=t2.job and t1.end=t2.rk order by id

全部评论

相关推荐

11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
野猪不是猪🐗:还是太卑微了,什么叫放弃本次面试应该说经过评估,贵公司与自己不匹配,决定不再推进后续流程
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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