У меня 3 таблицы: деньги, студент, факультет.Этот запрос возвращает каждый факультет и самую высокую стипендию в каждом из них.
select
f.name as "FACULTY_NAME",
max(stipend) as "MAX_STIPEND"
from
money m, student s
inner join
faculty f on f.id_faculty = s.faculty_id
where
m.student_id = s.id_student
group by
f.id_faculty, f.name;
Запрос работает нормально:
FACULTY_NAME | MAX_STIPEND
-----------------+---------------
IT Faculty | 50
Architecture | 60
Journalism | 40
Однако, когда я добавляю s.name к исходному запросу, чтобы также показатьимя студента, который получил max_stipend, запрос не работает, как раньше - он возвращает всех студентов
select
f.name as "FACULTY_NAME",s.name,
max(stipend) as "MAX_STIPEND"
from
money m, student s
inner join
faculty f on f.id_faculty = s.faculty_id
where
m.student_id = s.id_student
group by
f.id_faculty, f.name, s.name;
Результат запроса:
FACULTY_NAME | s.name | MAX_STIPEND
----------------+-----------+---------------
IT Faculty | Joe | 50
IT Faculty | Lisa | 10
Architecture | Bob | 60
Journalism | Fred | 5
Architecture | Susan | 5
Journalism | Tom | 40
Он делает то же самое, используяправый, левый и внутренний соединения.Может кто-нибудь сказать, где проблема?