题解 | #查找在职员工自入职以来的薪水涨幅情况#

考试分数(五)

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

好像有点zz了这个解法orz

select r.id,r.job,r.score,r.t_rank from
(select id, job, score, row_number() over(partition by job
                                         order by score desc) t_rank from grade) r
where (r.job,r.t_rank) in (select job, 
                           case when count(id) & 1 = 1 then (count(id)+1)*1.0/2
                           else count(id)*1.0/2+0.5
                           end d
                           from grade
                           group by job)
or (r.job,r.t_rank+0.5) in (select job, 
                           case when count(id) & 1 = 1 then (count(id)+1)*1.0/2
                           else count(id)*1.0/2+0.5
                           end d
                           from grade
                           group by job)
or (r.job,r.t_rank-0.5) in (select job, 
                           case when count(id) & 1 = 1 then (count(id)+1)*1.0/2
                           else count(id)*1.0/2+0.5
                           end d
                           from grade
                           group by job)
order by id
;
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 15:19
简历上能写3个月吗?
码农索隆:大胆写,主要你能把实习经历包装好,可以看一下我这篇帖子https://www.nowcoder.com/share/jump/4888395581180798063
点赞 评论 收藏
分享
06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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