查询“95033”班学生所选所有课程的平均分,包括cno,cname,avgscore,avgscore表示平均成绩
时间: 2024-03-18 13:38:30 浏览: 137
好的,根据你的要求,我来给你提供一个 SQL 查询语句:
```
SELECT c.cno, c.cname, AVG(sc.score) AS avgscore
FROM student s JOIN score sc ON s.sno = sc.sno
JOIN course c ON c.cno = sc.cno
WHERE s.class = '95033'
GROUP BY c.cno, c.cname;
```
这个 SQL 查询语句可以查询出班级为“95033”的学生所选的所有课程的平均分,并且包括课程编号和课程名称。其中,AVG函数可以求出平均分数,GROUP BY语句可以让查询结果按照课程编号和课程名称进行分组。
相关问题
写出SQL语句,查询“95033”班学生所选所有课程的平均分,包括Cno、Cname、avgscore,avgscore表示平均成绩,将运行无误后的SQL语句写入答题文件夹中的MYSQL1.TXT保存。
假设我们有以下三个表格:
学生表格(Student):
| Sno | Sname | Ssex | Sage | Sdept |
|-----|--------|------|------|--------|
| 101 | 张三 | 男 | 18 | 计算机 |
| 102 | 李四 | 女 | 19 | 通信 |
| 103 | 王五 | 男 | 18 | 自动化 |
| 104 | 赵六 | 男 | 20 | 计算机 |
| 105 | 钱七 | 女 | 19 | 通信 |
课程表格(Course):
| Cno | Cname | Tno | Ctime | Ccredit |
|-----|---------|-----|-------|---------|
| 001 | 数据库 | 101 | 32 | 4 |
| 002 | 计算机 | 102 | 48 | 3 |
| 003 | 通信 | 103 | 32 | 3 |
| 004 | 自动化 | 104 | 64 | 4 |
成绩表格(Score):
| Sno | Cno | Score |
|-----|-----|-------|
| 101 | 001 | 90 |
| 101 | 002 | 80 |
| 101 | 003 | 85 |
| 102 | 002 | 75 |
| 103 | 002 | 88 |
| 104 | 001 | 92 |
| 104 | 003 | 82 |
| 105 | 003 | 85 |
| 105 | 004 | 88 |
要查询"95033"班学生所选所有课程的平均分,可以使用以下SQL语句:
```
SELECT Course.Cno, Course.Cname, AVG(Score.Score) AS avgscore
FROM Student, Course, Score
WHERE Student.Sno = Score.Sno AND Course.Cno = Score.Cno AND Student.Sdept = '95033'
GROUP BY Course.Cno, Course.Cname;
```
执行以上语句将得到以下结果:
| Cno | Cname | avgscore |
|-----|---------|----------|
| 001 | 数据库 | 90.0000 |
| 003 | 通信 | 83.5000 |
注意:以上语句中的第4行WHERE条件是用来筛选"95033"班学生的,如果需要查询其他班级的话,需要修改该条件。
- student(sno,sname,age,sdept) 学生表 - course(cno,cname,teacher) 课程表 - Studentcourse(sno,cno,grade)选课表 写出 sql 语句: - 查询所有课程都及格的学生号和姓名 - 查询平均分不及格的课程号和平均成绩 - 找出各门课程的平均成绩,输出课程号和平均成绩 - 找出没有选择 c2 课程的学生信息
1. 查询所有课程都及格的学生号和姓名:
SELECT s.sno, s.sname
FROM student s
WHERE NOT EXISTS (
SELECT *
FROM course c
WHERE NOT EXISTS (
SELECT *
FROM studentcourse sc
WHERE sc.cno = c.cno AND sc.sno = s.sno AND sc.grade >= 60
)
)
2. 查询平均分不及格的课程号和平均成绩:
SELECT sc.cno, AVG(sc.grade) AS avg_grade
FROM studentcourse sc
GROUP BY sc.cno HAVING AVG(sc.grade) < 60
3. 找出各门课程的平均成绩,输出课程号和平均成绩:
SELECT sc.cno, AVG(sc.grade) AS avg_grade
FROM studentcourse sc
GROUP BY sc.cno
4. 找出没有选择 c2 课程的学生信息:
SELECT s.*
FROM student s
WHERE NOT EXISTS (
SELECT *
FROM studentcourse sc
WHERE sc.sno = s.sno AND sc.cno = 'c2'
)
阅读全文