【PostgreSQL】MySQLのGROUP_CONCATと同様の機能を実現する STRING_AGG
PostgreSQLでMySQLのGROUP_CONCAT関数と同様の機能を実現する方法について説明します。STRING_AGG関数を利用する場合の問題点とその解決策を紹介し、サンプルコードを交えて具体的な使用方法を解説します。
GROUP_CONCATとは?
MySQLのGROUP_CONCAT関数は、特定のグループに属する複数の行の値を1つの文字列に連結する関数です。以下はその基本的な使用例です。
|
|
PostgreSQLでの実現方法
PostgreSQLには直接的にGROUP_CONCATに対応する関数はありませんが、同様の機能をSTRING_AGG関数を用いて実現できます。以下にその基本的な使用例を示します。
|
|
STRING_AGGでの注意点
STRING_AGGを使用する際の問題点として、NULL値を含む列を連結する場合に予期せぬ結果を生む可能性があります。この場合、NULL値を除外するためにCOALESCE関数を併用することが推奨されます。
STRING_AGGの実用例
以下に具体的なテーブルとデータを使用した実例を示します。
サンプルテーブルとデータ
|
|
STRING_AGGの使用例
|
|
結果
product_name | sale_dates
--------------+-------------------
Product A | 2023-01-01, 2023-01-03
Product B | 2023-01-02, 2023-01-04
NULL値の処理
NULL値を無視して連結するには、COALESCEを使います。
|
|
まとめ
PostgreSQLでMySQLのGROUP_CONCATと同様の機能を実現するためには、STRING_AGG関数を使用します。