2つのテーブル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
2つのクエリの唯一の違いは、後者のサブクエリを使用して、結合する前に行を制限することです。このエラーを解決するにはどうすればよいですか?