我对这个 SQL 查询的解决方案是否正确?

Is my solution to this SQL query correct?

在我的考试中,我们给出了以下关系:

COURSES(**Number**, School, CourseName)

STUDENTS(**SNumber**, Surname, FirstName, School)

EXAMS(**Student**, **Course**, Grade, Date)

键以粗体显示。 EXAMS 关系存储通过给定课程考试的学生的信息。EXAMS.Student 引用 STUDENTS.SNumber 和 EXAMS.Course 引用 COURSES.Number。

我们要求编写一个 SQL 查询,为每个学号检索以下所有信息:

-他们的姓氏

-他们通过了多少种不同的考试

-他们获得了多少个不同的成绩

-他们在考试中获得的最低、平均和最高成绩。"

首先,我在回答中提到,由于 EXAMS 仅存储有关通过考试的学生的信息,因此无法知道学生是否未通过考试,因此我们只能计算有多少人未通过考试他们获得了不同的 及格 成绩。这是我写的查询:

SELECT S.SNumber, S.Surame,
       COUNT(E.Student) AS NumberOfExamsPassed,
       COUNT(DISTINCT E.Grade) AS NumberOfDifferentPassGrades,
       MIN(E.Grade) AS MinimumGrade,
       MAX(E.Grade) AS MaximumGrade,
       AVG(E.Grade) AS AverageGrade
FROM Students S, EXAMS E
GROUP BY E.Student;

这是一个足够的解决方案吗?

您应该使用显式联接。

SELECT S.SNumber, S.Surame,
       COUNT(E.Student) AS NumberOfExamsPassed,
       COUNT(DISTINCT E.Grade) AS NumberOfDifferentPassGrades,
       MIN(E.Grade) AS MinimumGrade,
       MAX(E.Grade) AS MaximumGrade,
       AVG(E.Grade) AS AverageGrade
FROM Students S
INNER JOIN EXAMS E ON S.SNumber = E.Student
GROUP BY E.Student;