ホームページ >データベース >mysql チュートリアル >PostgreSQLのGROUP BYクエリ内で文字列を連結するにはどうすればよいですか?

PostgreSQLのGROUP BYクエリ内で文字列を連結するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-22 08:37:12450ブラウズ

How to Concatenate Strings Within a PostgreSQL GROUP BY Query?

PostgreSQL の GROUP BY クエリで文字列を連結するにはどうすればよいですか?

質問:

PostgreSQL で、GROUP BY クエリ内のフィールドの文字列を連結するにはどうすればよいですか?

例:

次のスキーマを持つテーブルを考えてみましょう:

ID COMPANY_ID EMPLOYEE
1 1 Anna
2 1 Bill
3 2 Carol
4 2 Dave

目的は、COMPANY_ID でグループ化し、EMPLOYEE の値を連結して、次のようにすることです:

COMPANY_ID EMPLOYEE
1 Anna, Bill
2 Carol, Dave

解決策:

PostgreSQL 9.0 以降:

  • string_agg(expression, delimiter) 関数を使用します:
<code class="language-sql">SELECT company_id, string_agg(employee, ', ')
FROM mytable
GROUP BY company_id;</code>

PostgreSQL 8.4.x:

  • array_agg(expression) 関数を使用して array_to_string() を結合します:
<code class="language-sql">SELECT company_id, array_to_string(array_agg(employee), ', ')
FROM mytable
GROUP BY company_id;</code>

PostgreSQL 8.3.x 以前:

  • 文字列を連結するカスタム集計関数を作成します:
<code class="language-sql">CREATE AGGREGATE textcat_all(
    basetype = text,
    sfunc = textcat,
    stype = text,
    initcond = ''
);

SELECT company_id, textcat_all(employee)
FROM mytable
GROUP BY company_id;</code>
  • オプションで、セパレータの追加など、結合動作をカスタマイズする関数を作成できます。

以上がPostgreSQLのGROUP BYクエリ内で文字列を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。