查询平均分在75分以上的同学的选课门数、平均分和最高分。 表结构: CREATE TABLE score ( studentNo CHAR(7) NOT NULL, -- 学号 courseNo CHAR(3) NOT NULL, -- 课程号 termNo CHAR(3) NOT NULL, -- 学期号 score DECIMAL(5, 1) DEFAULT 0 NOT NULL , -- 成绩 PRIMARY KEY (studentNo, courseNo, termNo) ); 表样例 score表 studentNo courseNo termNo score 1500001 001 151 98.0 1500001 002 151 82.0 1500003 001 151 46.0 1500003 002 151 38.0 1500004 001 162 70.0 1500004 002 161 68.0 1500004 003 152 70.0 1500005 005 151 77.0 1500005 006 152 69.0 1600002 001 161 98.0 1600002 002 161 46.0 输出样例: 请在这里给出输出样例。例如: 学号 门数 平均分 最高分 1500001 2 90.0 98.0
时间: 2023-06-19 22:05:57 浏览: 288
可以使用以下 SQL 语句查询平均分在75分以上的同学的选课门数、平均分和最高分:
```
SELECT studentNo, COUNT(courseNo) AS '门数', AVG(score) AS '平均分', MAX(score) AS '最高分'
FROM score
GROUP BY studentNo
HAVING AVG(score) >= 75;
```
输出样例:
```
学号 门数 平均分 最高分
1500001 2 90.0 98.0
1600002 2 72.0 98.0
```
相关问题
1.查询每名学生的学号、选修课程数目、其所选修的课程的期末成绩总和,并将查询结果生成一张“学生选课统计”表。 2.求出各年级(取出学号前2位left(studentno,2))各门课的期末平均成绩,并按期末平均成绩降序排列。 3.查询教师的基本信息和所讲授的课程号,要求其中包括未分配课程的教师信息。 4.查询讲授“C06108”号课程的所有教师信息。 5.查询各班级的平均期末成绩,并按照平均分降序排序。(连接和统计)。 6.查询两门及以上课程的期末成绩超过80分的学生的姓名及超过80分的课程数。 7.查询选修了“嵌入式系统”或“接口技术”课程的学生学号。 8.查询至少选修了“1806000003”学生选修的全部课程的学生学号。 9.查询没有被任何学生选修的课程的课程号、课程名称和学分。 10.查询学生的期末成绩比其本人选修的所有课程的期末平均成绩低的学生学号、课程号和期末成绩。
1. 可以回答,需要查询的表格包括学生信息表、选课信息表、成绩信息表,使用 SQL 语句进行联表查询即可生成学生选课统计表。
2. 可以回答,需要查询的表格包括学生信息表、选课信息表、成绩信息表,使用 SQL 语句按年级和课程分组,并计算平均成绩,最后按照平均成绩降序排列即可。
3. 可以回答,需要查询的表格包括教师信息表、课程信息表和选课信息表,使用 SQL 语句进行联表查询,并加上条件筛选无课程信息的教师即可。
4. 可以回答,需要查询的表格包括教师信息表、课程信息表和选课信息表,使用 SQL 语句进行联表查询,并加上条件筛选讲授“C06108”号课程的教师即可。
5. 可以回答,需要查询的表格包括班级信息表、学生信息表和成绩信息表,使用 SQL 语句进行联表查询,并按照班级进行分组计算平均分,最后按照平均分降序排列即可。
6. 可以回答,需要查询的表格包括学生信息表、选课信息表和成绩信息表,使用 SQL 语句进行联表查询,并加上条件筛选出选了两门及以上课程且期末成绩超过80分的学生和课程,最后统计课程数即可。
7. 可以回答,需要查询的表格包括学生信息表和选课信息表,使用 SQL 语句进行联表查询,并加上条件筛选出选修了“嵌入式系统”或“接口技术”课程的学生即可。
8. 可以回答,需要查询的表格包括选课信息表,使用 SQL 语句进行子查询,先查询出选了“1806000003”课程的学生学号,再在选课信息表中查询这些学生所选修的所有课程,最后取出学生学号即可。
9. 可以回答,需要查询的表格包括课程信息表和选课信息表,使用 SQL 语句进行联表查询,并加上条件筛选出没有被任何学生选修的课程即可。
10. 可以回答,需要查询的表格包括学生信息表、选课信息表和成绩信息表,使用 SQL 语句进行联表查询,并加上条件筛选出期末成绩比其本人选修的所有课程的期末平均成绩低的学生和课程,最后取出学生学号、课程号和期末成绩即可。
CLASSNO STUDENTNO GRADE CLASS1 1001 86 CLASS1 1002 60 CLASS1 1003 85 CLASS1 1004 73 CLASS1 1005 95 CLASS1 1006 61 CLASS1 1007 77 CLASS1 1008 71 CLASS1 1009 61 CLASS1 1010 78 CLASS2 2001 81 CLASS2 2002 54 CLASS2 2003 57 CLASS2 2004 75 CLASS2 2005 98 CLASS2 2006 75 CLASS2 2007 76 CLASS2 2008 58 CLASS2 2009 73 CLASS2 2010 55 CLASS3 3001 42 CLASS3 3002 90 CLASS3 3003 81 CLASS3 3004 97 CLASS3 3005 68 CLASS3 3006 72 CLASS3 3007 81 CLASS3 3008 79 CLASS3 3009 87 CLASS3 3010 59 使用plSQL分析下列需求查询每个班级的最高分,最低分,平均分,以及大于平均分的人数,结果输出 班级 最高分 最低分 平均分 大于平均分的人数 得分点
以下是使用 PL/SQL 实现需求的代码:
```
DECLARE
-- 定义变量
v_classno VARCHAR2(10);
v_max NUMBER(3);
v_min NUMBER(3);
v_avg NUMBER(5,2);
v_above_avg NUMBER(2);
BEGIN
-- 循环每个班级
FOR c IN (SELECT DISTINCT CLASSNO FROM STUDENT_GRADE)
LOOP
-- 获取当前班级号
v_classno := c.CLASSNO;
-- 获取当前班级的最高分
SELECT MAX(GRADE) INTO v_max FROM STUDENT_GRADE WHERE CLASSNO = v_classno;
-- 获取当前班级的最低分
SELECT MIN(GRADE) INTO v_min FROM STUDENT_GRADE WHERE CLASSNO = v_classno;
-- 获取当前班级的平均分
SELECT AVG(GRADE) INTO v_avg FROM STUDENT_GRADE WHERE CLASSNO = v_classno;
-- 获取当前班级大于平均分的人数
SELECT COUNT(*) INTO v_above_avg FROM STUDENT_GRADE WHERE CLASSNO = v_classno AND GRADE > v_avg;
-- 输出结果
DBMS_OUTPUT.PUT_LINE(v_classno || ' ' || v_max || ' ' || v_min || ' ' || v_avg || ' ' || v_above_avg);
END LOOP;
END;
```
其中,使用了 PL/SQL 中的循环、变量、SELECT INTO 等语句来实现对每个班级的统计分析。最后通过 DBMS_OUTPUT.PUT_LINE() 函数输出结果。
阅读全文