Ограничения GROUP BY

Отказ от ответственности : я новичок в 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 внешнего запроса, я могу получить доступ только к трем полям в таблице, что не так уж и важно.

Я знаю, что вы не можете дать мне точный ответ, но я буду благодарен за любые подсказки!

5
задан Jonathan Leffler 14 October 2010 в 03:06
поделиться