在数据库中找出超过其选修课程的平均成绩的学号和课程号
时间: 2024-10-15 13:20:33 浏览: 24
北京邮电大学 BUPT 数据库课程 实验一 查询代码 数据库语言MySQL
在数据库中找到某个学生在其选修的所有课程中成绩超过平均成绩的情况,同样需要用到SQL。假设有个名为"Students"的表记录学生信息,有字段"StudentID"(学号),以及一个名为"Courses"的关联表,存储了每个学生选择的课程及其对应的成绩"Score"。查询语句可能如下:
```sql
WITH CourseAverages AS (
SELECT StudentID, CourseID, AVG(Score) as AverageScore
FROM Courses
GROUP BY StudentID, CourseID
)
SELECT S.StudentID, C.CourseID
FROM Students S
JOIN Courses C ON S.StudentID = C.StudentID
JOIN CourseAverages CA ON S.StudentID = CA.StudentID AND C.CourseID = CA.CourseID
WHERE C.Score > CA.AverageScore
```
这个查询首先计算每个学生每门课程的平均成绩(CourseAverages子查询),然后在主查询中,将这两个表联接起来,并过滤出成绩高于平均分的记录。
阅读全文