SQL1【简单】
牛客每次考试完,都会有一个成绩表(grade),如下:idjobscore
1C++11001
第1行表示用户id为1的用户选择了C++岗位并且考了11001分请你写一个sql语句查询各个岗位分数的平均数,并且按照分数降序排序,结果保留小数点后面3位(3位之后四舍五入)jobavg
Java12500.000
考点:group by
select job, round(avg(score),3) as avg
from grade
group by job
order by avg desc
SQL2【中等】
牛客每次考试完,都会有一个成绩表(grade),如下:idjobscore
1C++11001
第1行表示用户id为1的用户选择了C++岗位并且考了11001分请你写一个sql语句查询用户分数大于其所在工作(job)分数的平均分的所有grade的属性,并且以id的升序排序
如下:idjobscore
1C++11001
思路:先求得每个岗位的平均分数,再用内联接匹配每个id所在岗位的平均分数,取分数高于所被分配的平均分的id即可
select g1.id, g1.job, g1.score from grade g1
join (select job, avg(score) as avg from grade group by job) as g2
on g1.job=g2.job and g1.score>g2.avg
group by id