Eu tenho duas tabelas employee
e phones
. Um funcionário pode ter de 0 a n números de telefone. Quero listar os nomes dos funcionários com seus números de telefone. Estou usando a consulta abaixo que funciona bem.
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM employee LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
A tabela de funcionários pode conter um grande número de linhas. Quero buscar apenas alguns funcionários de cada vez. Por exemplo, quero buscar 3 funcionários com seus números de telefone. Estou tentando executar esta consulta.
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
Mas eu recebo esse erro. ERROR: column "employee.empname" must appear in the GROUP BY clause or be used in an aggregate function
A única diferença entre duas consultas é que estou usando a subconsulta na última para limitar as linhas antes de ingressar. Como resolvo esse erro?