SQL练习73:考试分数(二)
题目链接:牛客网
题目描述
牛客每次考试完,都会有一个成绩表(grade),如下:
第1行表示用户id为1的用户选择了C++岗位并且考了11001分
…
第8行表示用户id为8的用户选择了前端岗位并且考了9999分
请你写一个sql语句查询用户分数大于其所在工作(job)分数的平均分的所有grade的属性,并且以id的升序排序,如下:
解法
先获取GROUP BY
分组获得各个job
的平均分数avg
,再将结果与grade
表连接起来。查找avg<score
的数据。
SELECT id, g.job, score
FROM grade g JOIN (SELECT job, AVG(score) `avg`
FROM grade
GROUP BY job) r
ON r.job = g.job
WHERE r.avg < g.score