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

考试分数(五)

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

题目:

查询各个岗位分数的中位数位置上的所有grade信息,并且按id升序排序

思路:

1、各个岗位:按job分组,各岗位都有自己的排序——窗口函数 row_number()

2、中位数:参照上题,round(cnt/2) or rk=round((1+cnt)/2)

代码:

select id,job,score,rk
from 
    (select id,job,score,
     row_number() over(partition by job order by score desc) as rk,
     count(score) over(partition by job) cnt
    from grade
    )a
#where rk in if(cnt%2=0,cnt/2 or cnt/2+1,(cnt+1)/2)
where rk=round(cnt/2) or rk=round((1+cnt)/2)
order by id

反思:

1、一开始没想到用count,就想着看每个job个数用max(rk),但这样外层循环需要group by,然后就得vid,job,score,rk全放进去,做不出来;

2、判断中位数那里,还想着分cnt奇偶情况,做不出来,还是按照上一道题直接用round了。

全部评论

相关推荐

白火同学:先说结论,准大三不是特别好找实习,boss沟通300+没有实习是很正常的情况。一是暑期实习时间太短了,二是在这么多准大四都找不到实习,从实习时间和掌握技术层面,企业会优先看他们。 再说简历,其实985本+准大三到这水平的简历也很优秀了,要说的话,项目经历可以再优化一下,可以基本围绕采取STAR原则,分为项目概述、技术架构、技术亮点、实现结果,再发给AI润色一下。 最后说操作,准大三的话,如果想找实习那就多投,不过现在也7月中旬了,时间上已经略晚了。如果7月底实在找不到,也可以多刷点算法,多学点技术,这实习也不至于一定得有,当然有更好。
点赞 评论 收藏
分享
jnsytgsyqj...:简历跟测试没关系,你更适合运营
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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