Интересная задачка. Самому стало интересно. Сделал финт ушами: объеденил средний балл и номер студента в одно поле с разделителем ",," - максимально ищется нормально, остается только его разбить на части. У меня, правда, таблицы несколько отличаются:
Код:
CREATE TABLE UNIVERSITY (
UNIV_ID INTEGER PRIMARY KEY,
UNIV_NAME CHAR(96) NOT NULL UNIQUE,
RATING INTEGER,
CITY CHAR(20) NOT NULL
);
CREATE TABLE STUDENT (
STUD_ID INTEGER PRIMARY KEY,
SURNAME CHAR(20) NOT NULL,
NAME CHAR(20) NOT NULL,
STIPEND INTEGER,
KURS INTEGER NOT NULL,
CITY CHAR(20) NOT NULL,
BIRTHDAY DATE,
UNIV_ID INTEGER REFERENCES UNIVERSITY(UNIV_ID)
);
CREATE TABLE EXAM_MARKS (
EXAM_ID INTEGER PRIMARY KEY,
STUD_ID INTEGER REFERENCES STUDENT(STUD_ID),
SUBJ_ID INTEGER REFERENCES SUBJECT(SUBJ_ID),
MARK INTEGER,
EXAM_DATE DATE,
CHECK ((MARK>=2) AND (MARK<=5))
);
Т.е. вместо таблицы ГРУППА - таблица УНИВЕРСИТЕТЫ, но это не принципиально. В результате получаются три поля: univ_id - идентификатор университета, maxmark - максимальная средняя оценка для данного университета, stud_id - идентификатор студента, имеющего эту оценку:
Код:
select univ_id, substr(csm, 1, instr(csm, ',,') - 1) maxmark,
substr(csm, instr(csm, ',,') + 2, length(csm) - instr(csm, ',,') - 1) stud_id from
(select univ_id, max(csa) csm from
(select univ_id, to_char(round(avgm, 2)||',,'||s.stud_id) csa from student s,
(select stud_id, avg(mark) avgm from exam_marks group by stud_id) a
where s.stud_id = a.stud_id) group by univ_id)
Зная univ_id и stud_id несложно выковырять название университета (кафедры в твоем случае) и ф.и.о. студента из таблиц university и student соответственно.
Решение, конечно, дубовое, но все-таки выдает верный результат. Хотя есть проблемы, связанные с тем, что максимальный средний балл могут иметь несколько студентов в университете (на кафедре), а в моем примере выводится только один из них, имеющий максимальный идентификатор (номер).
З.Ы. К сожалению, переложить и проверить это решения для Access'а не могу в виду его (Access'а) хронического отсутствия и незнания. Но, думаю, ход моих мыслей тебе понятен.