JSONB型はPostgreSQLでJSONデータを格納するための型であり、jsonb_agg
はその中で使用される集約関数です。jsonb_agg
は、複数の行のJSONB値を集約して1つのJSON配列にまとめます。
これは特に、グループ化された結果をJSON配列として返す必要がある場合に便利です。
以下に、jsonb_agg
の基本的な使用方法を解説します。
jsonb_agg 基本構文
jsonb_agg(expression)
jsonb_agg 使用例
基本的なクエリの中で使用する例を示します。
SELECT jsonb_agg(column_name) FROM table_name;
このクエリでは、table_name
からのデータを集約し、1つのJSON配列として返します。
グループ化との組み合わせ
jsonb_agg
は、GROUP BY句と組み合わせて使用することができ、グループごとにJSON配列を作成します。
SELECT group_column, jsonb_agg(column_name) FROM table_name GROUP BY group_column;
このクエリでは、group_column
でグループ化されたデータを集約し、各グループごとに1つのJSON配列を返します。
ネストされたJSONの作成
jsonb_agg
は、ネストされたJSONを作成するのにも役立ちます。
例えば、JOINしたテーブルのデータをネストしたJSONにすることができます。
SELECT parent_column, jsonb_agg(child_column) AS children
FROM parent_table
LEFT JOIN child_table ON parent_table.id = child_table.parent_id
GROUP BY parent_column;
このクエリでは、親テーブルと子テーブルを結合し、親ごとに子のデータをネストしたJSON配列として返します。
まとめ
jsonb_agg
は、PostgreSQLでJSONデータを操作する際に非常に便利な関数です。
データの集約やネストした構造の作成など、さまざまな場面で活用できます。