SQLのARRAY_AGGは、複数のレコードの値を一つの配列にまとめて表示するための集計関数です。複数店舗が紐づけられている子これにより、関連するデータをコンパクトに整理し、見やすくすることができます。
1. ARRAY_AGGの基本的な使い方
ARRAY_AGGは、GROUP BYと組み合わせて使うのが一般的です。これにより、特定のカテゴリに属する複数の値を1つのレコードに集約できます。
構文:
SELECT
グループ化したいカラム,
ARRAY_AGG(集約したいカラム)
FROM
テーブル名
GROUP BY
グループ化したいカラム;
例: 注文ごとの商品リストをまとめる
order_detailsというテーブルがあり、各注文(order_id)に複数の商品ID(product_id)が紐づいているとします。
| order_id | product_id | quantity |
|---|---|---|
| 101 | 200129 | 2 |
| 101 | 218882 | 1 |
| 102 | 532847 | 3 |
| 102 | 200129 | 1 |
このテーブルから、注文ごとに購入された商品IDを一覧で表示したい場合、ARRAY_AGGが非常に役立ちます。
SELECT
order_id,
ARRAY_AGG(product_id) AS ordered_products
FROM
order_details
GROUP BY
order_id;
実行結果:
| order_id | ordered_products |
|---|---|
| 101 | {200129, 218882} |
| 102 | {532847, 200129} |
このように、ARRAY_AGGを使うことで、order_idが同じレコードのproduct_idが1つの配列にまとめられ、関連するデータを1行で確認できるようになります。
2. なぜARRAY_AGGが便利なのか?
ARRAY_AGGを使用する主なメリットは、関連するデータを1つのレコードに紐づけて見やすく表示できる点にあります。
- データ分析: 1対多の関係にあるデータを集約することで、よりスムーズに分析を行えます。
- レポート作成: 顧客ごとの購入履歴や、プロジェクトごとのタスク一覧などを簡潔な形式で出力できます。
- アプリケーション開発: 取得したデータをそのままアプリケーションの表示に利用でき、プログラム側でデータの整形を行う手間を省けます。
ARRAY_AGGは、このようにデータの整理と可視化に非常に役立つ関数です。これを使いこなせば、より効率的なSQLクエリを書けるようになります。