Sql 班级中各科成绩最高者
时间: 2023-06-14 07:08:34 浏览: 207
假设有以下表格结构:
```
学生表(Student):
学生编号(StudentID)
班级编号(ClassID)
姓名(Name)
成绩表(Score):
学生编号(StudentID)
科目编号(SubjectID)
成绩(Score)
科目表(Subject):
科目编号(SubjectID)
科目名称(SubjectName)
```
则可以使用如下 SQL 语句查询每个班级中各科成绩最高者:
```
SELECT s.ClassID, su.SubjectName, MAX(sc.Score) AS MaxScore
FROM Student s
INNER JOIN Score sc ON s.StudentID = sc.StudentID
INNER JOIN Subject su ON sc.SubjectID = su.SubjectID
WHERE (s.ClassID, sc.SubjectID, sc.Score) IN (
SELECT s.ClassID, sc.SubjectID, MAX(sc.Score)
FROM Student s
INNER JOIN Score sc ON s.StudentID = sc.StudentID
GROUP BY s.ClassID, sc.SubjectID
)
GROUP BY s.ClassID, su.SubjectName;
```
以上 SQL 语句使用了子查询和聚合函数 MAX()。首先使用子查询查询出每个班级中每个科目的最高分数,然后将其与学生表、成绩表和科目表进行连接,最终得到每个班级中各科成绩最高者的信息。
阅读全文