使用前方两个视图,查询数据库课程,分数高于该课程平均分的学生信息
时间: 2024-05-04 21:22:02 浏览: 94
假设数据库中有以下表:
- `students`:学生信息,包括学生编号 `student_id` 和学生姓名 `student_name`
- `courses`:课程信息,包括课程编号 `course_id` 和课程名称 `course_name`
- `scores`:学生成绩信息,包括学生编号 `student_id`、课程编号 `course_id` 和成绩 `score`
可以使用以下 SQL 语句来查询:
```
SELECT s.student_id, s.student_name
FROM scores sc
JOIN students s ON sc.student_id = s.student_id
JOIN courses c ON sc.course_id = c.course_id
WHERE sc.score > (
SELECT AVG(sc2.score)
FROM scores sc2
WHERE sc2.course_id = c.course_id
)
AND c.course_name = '数据库'
```
解释一下上述 SQL 语句:
- 首先通过 `JOIN` 将 `scores` 表与 `students` 表和 `courses` 表关联起来,以便能够查询学生信息和课程信息。
- `WHERE` 子句中的第一个条件 `sc.score >` 后面是一个子查询,用来查询该课程的平均分,并与当前学生的成绩进行比较。
- `WHERE` 子句中的第二个条件 `c.course_name = '数据库'` 用于限定查询的课程名称为“数据库”。
- 最后只查询学生的学号和姓名信息。
阅读全文