Отказ от ответственности : я новичок в SQL, и это предназначен для класса, но я мог бы толкнуть в правильном направлении.
У меня есть три таблицы:
student (_sid_, sname, sex, age, year, gpa)
section ( _dname_, _cno_, _sectno_, pname)
enroll (_sid_, grade, _dname_, _cno_, _sectno _)
(первичные ключи обозначены подчеркиванием)
Я пытаюсь написать Oracle-совместимый SQL-запрос, который возвращает таблица с именем ученика ( student.sname
), имеющая наивысший GPA в каждом разделе (включая section.cno
и section.sectno
). как и все остальные атрибуты из раздела
.
Мне удалось использовать агрегированный запрос и GROUP BY
, чтобы получить максимальный средний балл для каждого раздела:
SELECT MAX(s.gpa), e.cno, e.sectno
FROM enroll e,
student s
WHERE s.sid = e.sid
GROUP BY e.cno, e.sectno
Не говоря уже о других атрибутах раздела
, я не могу даже придумать, как прикрепить имя ученика ( student.sname
). Если я добавлю его в предложение SELECT
, его нужно будет включить в GROUP BY
, что приведет к нарушению остальной части запроса. Если я использую весь этот запрос внутри предложения WHERE
или FROM
внешнего запроса, я могу получить доступ только к трем полям в таблице, что не так уж и важно.
Я знаю, что вы не можете дать мне точный ответ, но я буду благодарен за любые подсказки!