Skip to content

SQL266 考试分数(一)

Static BadgeStatic Badge

题目描述

牛客每次考试完,都会有一个成绩表(grade),如下:

idjobscore
1C++11001
2C++10000
3C++9000
4Java12000
5Java13000
6JS12000
7JS11000
8JS9999

第1行表示用户id为1的用户选择了C++岗位并且考了11001分

。。。

第8行表示用户id为8的用户选择了JS岗位并且考了9999分

请你写一个sql语句查询各个岗位分数的平均数,并且按照分数降序排序,结果保留小数点后面3位(3位之后四舍五入):

jobavg
Java12500.000
JS10999.667
C++10000.333

(注意: sqlite 1/2得到的不是0.5,得到的是0,只有1*1.0/2才会得到0.5,sqlite四舍五入的函数为round)

SQL Schema

sql
drop table if exists grade;
CREATE TABLE  grade(
`id` int(4) NOT NULL,
`job` varchar(32) NOT NULL,
`score` int(10) NOT NULL,
PRIMARY KEY (`id`));

INSERT INTO grade VALUES
(1,'C++',11001),
(2,'C++',10000),
(3,'C++',9000),
(4,'Java',12000),
(5,'Java',13000),
(6,'JS',12000),
(7,'JS',11000),
(8,'JS',9999);

答案

sql
SELECT job, ROUND(AVG(score), 3) AS `avg`
FROM grade
GROUP BY job
ORDER BY avg DESC;