Показать самый высокий результат каждой группы с данными релевантности? - PullRequest
1 голос
/ 27 ноября 2010

У меня есть 4 таблицы, подобные этой:

  • "Студент" с полями ID, FullName, Gender, ClassID ("ID" из "Class") ....

  • «Класс» с полями ID, ClassName

  • «Тема» с полями ID, SubjectName

  • «Баллы» с полями ID, StudentID («Идентификатор» «Студента»), SubjectID («Идентификатор предмета»), ExamPoint

Средний балл за экзамен студента рассчитывается путем сложения всех баллов и деления этого результата на количество предметов. Если у Джона есть математика 8, английский 4 и литература 6, то его средняя экзаменационная оценка составляет (8 + 4 + 6) / 3 = 6. Если у Мэри 10 баллов по математике и 5 по английскому, то ее средний балл экзамена (10 + 5) /2=7.5*1021

Я собираюсь выбрать человека, который имеет самый высокий средний балл экзамена в каждом классе, затем отобразить его имя, имя класса и их средние баллы экзамена. Как я могу это сделать?

1 Ответ

2 голосов
/ 27 ноября 2010

Попробуйте эти 2 запроса.Первый - это представление, которое дает вам средние баллы за экзамен для каждого студента.

V_AveragesPoints

SELECT  s.FullName, c.ClassName, AVG(p.ExamPoint) AS AvgPoints
FROM    Points p
INNER   JOIN Student s
        ON p.StudentID = s.ID
INNER   JOIN Class c
        ON s.ClassID = c.ID
GROUP   BY s.FullName, c.ClassName

Второе дает вам представление о самых высоких средних баллах для каждого класса.

SELECT  FullName, ClassName, AvgPoints
FROM    V_AveragePoints ap1
WHERE   AvgPoints = (SELECT MAX(AvgPoints) FROM V_AveragePoints WHERE ClassName = ap1.ClassName)

Я написал их, используя стандартный T-SQL, чтобы они работали в MS Access, хотя я еще не проверял их с помощью MS Access.Они отлично работают в SQL Server, но дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...