スポンサーリンク

【SQL】ARRAY_AGG関数の使い方

記事内に広告が含まれています。

Snowflakeなどで利用できるARRAY_AGG関数の使い方をご紹介します。

スポンサーリンク

はじめに

SQLのARRAY_AGG関数は、複数の行からの値を一つの配列にまとめる集計関数です。

データの集約やカスタムリストの作成に非常に便利です。

ARRAY_AGG関数の詳細とその使用例について説明します。

スポンサーリンク

ARRAY_AGG関数の基本構文

ARRAY_AGG関数の基本構文は以下の通りです。

ARRAY_AGG(expression [ORDER BY [sort_expression {ASC | DESC}], ...])
  • expression
    配列に含める値を指定します。
  • ORDER BY
    配列内の値をソートする順序を指定します(オプション)。

サンプルデータ

まず、例として以下のような「社員」テーブルを使用します。

id名前部署
1山田太郎営業
2佐藤花子開発
3鈴木一郎営業
4高橋次郎開発
5田中三郎営業

使用例

基本例

営業部門に所属する社員の名前を配列として取得する例を示します。

SELECT ARRAY_AGG(名前 ORDER BY 名前) AS 営業部門社員
FROM 社員
WHERE 部署 = '営業';

結果は、以下のようになります。

営業部門社員
{“山田太郎”, “鈴木一郎”, “田中三郎”}

部署ごとに社員の名前を配列で取得

次に、部署ごとに社員の名前を配列で取得する例を示します。

SELECT 部署, ARRAY_AGG(名前 ORDER BY 名前) AS 部署ごとの社員
FROM 社員
GROUP BY 部署;

結果は以下のようになります。

部署部署ごとの社員
営業{“山田太郎”, “鈴木一郎”, “田中三郎”}
開発{“佐藤花子”, “高橋次郎”}

ARRAY_AGGの実用例

ARRAY_AGG関数は以下のような場面で役立ちます。

  1. レポート生成
    • 特定の条件に合致するデータを配列として集約し、レポートに表示することで、可読性が向上します。
  2. データの可視化
    • 配列データを利用して、特定のカテゴリ内のデータポイントをグラフやチャートとして表示できます。
  3. データ移行と統合
    • 複数のレコードを単一のフィールドに集約し、他のシステムへのデータ移行や統合に役立ちます。

より複雑な使用例

例えば、各部署ごとに社員のIDをカンマ区切りの文字列として取得したい場合、ARRAY_AGGを利用して次のようにします。

SELECT 部署, STRING_AGG(CAST(id AS VARCHAR), ',') AS 部署ごとの社員ID
FROM 社員
GROUP BY 部署;

結果は、以下のようになります。

部署部署ごとの社員ID
営業1,3,5
開発2,4

おわりに

ARRAY_AGG関数は、データの集約、カスタムリストの作成、複雑なデータ操作などに役立ちます。

使用できるデータベース製品については、各社のドキュメントをご確認ください。

スポンサーリンク
SQL
著者SNS
タイトルとURLをコピーしました