Tengo dos mesas employee
y phones
. Un empleado puede tener 0 a n números de teléfono. Quiero enumerar los nombres de los empleados con sus números de teléfono. Estoy usando la siguiente consulta que funciona bien.
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM employee LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
La tabla de empleados puede contener un gran número de filas. Quiero buscar solo algunos empleados a la vez. Por ejemplo, quiero buscar a 3 empleados con sus números de teléfono. Estoy tratando de ejecutar 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
Pero me sale este error. ERROR: column "employee.empname" must appear in the GROUP BY clause or be used in an aggregate function
La única diferencia entre dos consultas es que estoy usando subconsulta en la última para limitar las filas antes de unirme. ¿Cómo resuelvo este error?