1. ホーム
  2. sql

[解決済み] postgres の array_agg 関数で生成される重複を削除する方法

2022-02-19 16:14:47

質問

以下のSQLクエリを書き換えて、nameが1つだけ出現する結果を生成する方法をご存知の方はいらっしゃいますか?(結果はユーザーによってグループ化されます)。

クエリ

SELECT array_to_string(array_agg(CONCAT(u.firstname, ' ', u.lastname)), ', ')
FROM log_has_item logitem
  INNER JOIN log log ON log.id = logitem.log_id
  INNER JOIN worker u ON log.worker_id = u.id
WHERE logitem.company_id = 1

実行可能なクエリは sqlfiddle.com . SQLの実行ボタンをクリックすると、次のような結果が表示されます。 フランチセック・スミス 2回

解決方法は?

を使用することができます。 distinct の中にあるキーワード array_agg :

SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT CONCAT(u.firstname, ' ', u.lastname)), ', ')
FROM log_has_item logitem
  INNER JOIN log log ON log.id = logitem.log_id
  INNER JOIN worker u ON log.worker_id = u.id
WHERE logitem.company_id = 1

この例でSQLFiddle