考试分数(四)

考试分数(四)

http://www.nowcoder.com/questionTerminal/502fb6e2b1ad4e56aa2e0dd90c6edf3c

首先肯定是根据不同的岗位来的,故总体架构为:
select xxx
from grade 
group by job order by job;
因为只是求中位数的位置,故不需要排序,也不需要知道中位数是多少。
假设1个岗位人数总数为N,那么不管是奇数还是偶数,起始位置一定是N/2,如果是奇数,那么终止位置也是N/2,如果是偶数,终止位置就是N/2+1,所以后面的+1判断是不是偶数就行了
select job, cast((count(id)+1)/2 AS INTEGER) as 'start' , 
(cast((count(id)+1)/2 AS INTEGER)+(case when count(id)%2=1 then 0 else 1 end)) as 'end' --终止位置+是不是偶数(是不是+1)
from grade 
group by job order by job;



mysql解法:
SELECT job,FLOOR((COUNT(*)+1)/2) AS `start`,FLOOR((COUNT(*)+1)/2)+if(COUNT(*) % 2=1,0,1) AS `end` 
from grade  
GROUP BY job 
order by job;


全部评论

相关推荐

门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
评论
11
1
分享

创作者周榜

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