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

考试分数(五)

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

select id,job,score,rk as t_rank
from
(
    select id,g.job,score,start,end,row_number() over(partition by g.job order by score desc) rk
    from grade g 
    left join
    (select job,if(count(*)%2=1,round(count(*)/2,0),round(count(*)/2,0)) as start,if(count(*)%2=1,round(count(*)/2,0),round(count(*)/2+1,0)) as end
    from grade
    group by job
    order by job) j 
    on g.job=j.job
) b
where start=rk or end=rk
order by id

思路很简单,中位数的寻找上一题已经写过了,所以可以直接复制过来

select job,if(count(*)%2=1,round(count(*)/2,0),round(count(*)/2,0)) as start,if(count(*)%2=1,round(count(*)/2,0),round(count(*)/2+1,0)) as end
from grade
group by job
order by job

然后是排名问题,用窗口函数

select id,g.job,score,start,end,row_number() over(partition by g.job order by score desc) rk
from grade g 

然后两表连接一下
图片说明
最后where筛选一下就完成了

全部评论

相关推荐

实习回来快一个月了,海投海笔海测全干了,今天面了两个真的有点心碎,好难啊! 感觉现在就是纯碰瓷互联网,焦虑,,, 阿里云快给我泡出来!!!
小肥罗:别焦虑,心态不好影响健康,心态放平哦,我可以告诉你,我大三的暑假拿了15份offer,但是我投递了300+企业,整个暑假,我都是边学习,边改简历,边刷题,边投递简历,边应对笔试,面试,一天三家公司的笔试/面试,我一天没睡几个小时,一屁股坐在房间,就像钉在那里一样。。。我也哭过,但是哭完后我也是继续努力才有15份offer的,加油兄弟!不许气馁哈
点赞 评论 收藏
分享
点赞 评论 收藏
分享
08-29 17:17
已编辑
门头沟学院
嗨害嗨我来了:张总:你们这些年轻人,这不是把我的爱好暴露了吗?
工作时那些社死瞬间
点赞 评论 收藏
分享
09-16 14:01
井冈山大学 Java
肖先生~:兄弟们,我发的她都点赞了,但是就是不给我微信
秋招被确诊为……
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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