查询所有学生的所有课程的成绩以及平均成绩 12)查询每门课程的成绩最高分、最低分和平均分数据库原理
时间: 2023-11-16 07:08:51 浏览: 933
这两个问题都可以通过 SQL 语句来实现。
1. 查询所有学生的所有课程的成绩以及平均成绩:
```sql
SELECT s.student_id, c.course_id, sc.score, AVG(sc.score) OVER (PARTITION BY s.student_id) AS avg_score
FROM student s
JOIN score sc ON s.student_id = sc.student_id
JOIN course c ON sc.course_id = c.course_id
ORDER BY s.student_id, c.course_id;
```
解释:首先使用 `JOIN` 关联 `student`、`score` 和 `course` 三个表,得到每个学生在每门课程上的成绩。然后使用 `AVG` 函数计算每个学生的平均成绩,并使用 `OVER (PARTITION BY s.student_id)` 指定按照学生 ID 分组计算平均值。最后使用 `ORDER BY` 对结果按照学生 ID 和课程 ID 排序。
2. 查询每门课程的成绩最高分、最低分和平均分:
```sql
SELECT c.course_id, MAX(sc.score) AS max_score, MIN(sc.score) AS min_score, AVG(sc.score) AS avg_score
FROM score sc
JOIN course c ON sc.course_id = c.course_id
GROUP BY c.course_id;
```
解释:使用 `JOIN` 关联 `score` 和 `course` 两个表,得到每门课程的成绩。然后使用 `MAX`、`MIN` 和 `AVG` 函数分别计算每门课程的最高分、最低分和平均分,并使用 `GROUP BY` 指定按照课程 ID 分组计算这些值。
阅读全文