首页 > 试题广场 >

考试分数(一)

[编程题]考试分数(一)
  • 热度指数:78818 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

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

id job score
1 C++ 11001
2 C++
10000
3 C++
9000
4 Java 12000
5 Java
13000
6 JS 12000
7 JS
11000
8 JS
9999

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

。。。

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

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

job
avg
Java 12500.000
JS 10999.667
C++ 10000.333

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

示例1

输入

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);

输出

Java|12500.000
JS|10999.667
C++|10000.333
select job,round(avg(score),3) as avg
from grade
group by job
order by avg desc
发表于 2022-05-10 21:27:14 回复(0)
select job, round(avg(score) ,3)
from grade
group by job
order by avg(score) desc

发表于 2022-04-19 14:07:50 回复(0)
SELECT job,
round(avg(score),3) as avg 
FROM grade GROUP BY job ORDER BY avg DESC

发表于 2021-10-18 21:20:03 回复(0)
SELECT job, ROUND(AVG(score), 3) AS avg 
FROM grade GROUP BY job ORDER BY avg DESC;
发表于 2020-12-11 20:57:31 回复(0)
*1.分组 order by job       2.求平均值 avg(score)        3.排序 order by avg() desc
select job,avg(score)
from grade
group by job
order by avg(score) desc


发表于 2021-11-18 19:17:12 回复(1)
发表于 2021-06-01 15:41:25 回复(0)
看出来了,你们是在炫技,我走了

发表于 2020-10-27 15:42:04 回复(1)
1.首先题目肯定是按工作分组了,那么语句肯定是如下的:
select xxx from grade
group by job
然后知道分组之后的分数和是
sum(score)
求平均数就是
round(sum(score)*1.0/count(id),3) as avg
联合再按avg降序排序为:
select job,round(sum(score)*1.0/count(id),3) as avg from grade
group by job order by avg desc;


发表于 2020-09-21 10:09:58 回复(4)
select job,round(avg(score),3) as avg
from grade
group by job
order by avg(score) desc
发表于 2020-10-23 23:48:04 回复(4)
select job,ROUND(avg,3) from(
select job,avg(score) as avg from grade where job ='Java'
union all
select job,avg(score) as avg from grade where job ='C++'
union all
select job,avg(score) as avg from grade where job ='前端'
) as a ORDER BY avg desc 

联合查询,查询的结果再进行排序和取三位数,这样就很小白容易理解了吧
发表于 2020-10-13 14:17:17 回复(2)
-- 在Mysql中,ROUND函数用于数据的四舍五入,它有两种形式:
-- 1、ROUND(x,d)  , x指要处理的数, d是指保留几位小数
-- 这里有个值得注意的地方是, d可以是负数, 这时是指定小数点左边的d位整数位为0,同时小数位均为0;
-- 2、round(x)  ,其实就是round(x,0),也就是默认d为0;
SELECT job,ROUND(AVG(score),3) AS avg
FROM grade
GROUP BY job
ORDER BY avg DESC;

发表于 2022-01-29 18:24:03 回复(1)
select job,round(avg(score),3) as avg
from grade
group by job
order by avg desc

发表于 2024-11-26 11:24:21 回复(0)
select job,
round(avg(score),3)
from grade
group by job
order by 2 desc;

发表于 2025-03-08 19:45:21 回复(0)
Select job, ROUND(avg(score),3) AS avg
From grade
Group by job
Order by avg desc
发表于 2025-02-24 00:56:32 回复(0)
select job,round(avg(score),3)as avg from grade
group by job
order by avg desc ;
发表于 2025-02-01 19:29:37 回复(0)
select job,round(sum(score)/count(job),3) as avg
from grade
group by job
order by avg desc;
发表于 2024-12-04 11:47:15 回复(0)
select job,round(
    avg(score),3
) as a
from grade
group by job
order by a desc

发表于 2024-10-30 17:35:55 回复(0)
SELECT
    job,
    ROUND(AVG(score), 3) AS avg
FROM grade
GROUP BY job
ORDER BY avg desc
发表于 2024-10-26 14:09:30 回复(0)
select job,round(avg(score),3) avg
from grade
group by job
order by avg desc

发表于 2024-10-22 12:33:04 回复(0)
select job,round(avg(score),3) as avg
from grade
group by job
order by avg desc
考察avg函数求平均值,round(col,x)四舍五入保留x位小数
发表于 2024-10-06 22:31:03 回复(0)

问题信息

难度:
154条回答 3333浏览

热门推荐

通过挑战的用户

查看代码
考试分数(一)