您当前的位置: 首页 >  sql

Dream丶Killer

暂无认证

  • 0浏览

    0关注

    188博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SQL练习75:考试分数(四)

Dream丶Killer 发布时间:2021-02-15 20:39:52 ,浏览量:0

SQL练习75:考试分数(四)

题目链接:牛客网

题目描述 牛客每次考试完,都会有一个成绩表(grade),如下: 在这里插入图片描述 第1行表示用户id为1的用户选择了C++岗位并且考了11001分 … 第8行表示用户id为8的用户选择了B语言岗位并且考了9999分

请你写一个sql语句查询各个岗位分数升序排列之后的中位数位置的范围,并且按job升序排序,结果如下: 在这里插入图片描述 解释:

第1行表示C++岗位的中位数位置范围为[2,2],也就是2。因为C++岗位总共3个人,是奇数,所以中位数位置为2是正确的(即位置为2的10000是中位数)

第2行表示Java岗位的中位数位置范围为[1,2]。因为Java岗位总共2个人,是偶数,所以要知道中位数,需要知道2个位置的数字,而因为只有2个人,所以中位数位置为[1,2]是正确的(即需要知道位置为1的12000与位置为2的13000才能计算出中位数为12500)

第3行表示前端岗位的中位数位置范围为[2,2],也就是2。因为B语言岗位总共3个人,是奇数,所以中位数位置为2是正确的(即位置为2的11000是中位数)

解法 COUNT(id)/2为小数时,使用round()函数取整,正好符合题目区间设定。

SELECT job, round(COUNT(id)/2) `start`, round((COUNT(id)+1)/2) `end`
FROM grade
GROUP BY job
ORDER BY job
关注
打赏
1655344294
查看更多评论
立即登录/注册

微信扫码登录

0.0351s