У меня есть две таблицы employee
и phones
. Сотрудник может иметь от 0 до n телефонных номеров. Я хочу перечислить имена сотрудников с их номерами телефонов. Я использую запрос ниже, который работает нормально.
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM employee LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
Таблица сотрудников может содержать большое количество строк. Я хочу получить только несколько сотрудников одновременно. Например, я хочу получить 3 сотрудников с их номерами телефонов. Я пытаюсь выполнить этот запрос.
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM
(SELECT * FROM employee ORDER BY empname LIMIT 3 OFFSET 0) AS employee
LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
Но я получаю эту ошибку. ERROR: column "employee.empname" must appear in the GROUP BY clause or be used in an aggregate function
Единственная разница между двумя запросами состоит в том, что я использую подзапрос в последнем, чтобы ограничить количество строк перед соединением. Как мне решить эту ошибку?
источник