GROUP BY を使用したデータの集計: カンマ区切りリストの作成
SQL の GROUP BY
句は、共有列値に基づいて行をグループ化し、集計関数を適用する場合に強力です。 よく使用されるアプリケーションは、単一の列の値をグループごとに単一のカンマ区切りの文字列に結合することです。
テーブルの例を使って説明してみましょう:
<code>ID User Activity PageURL 1 Me act1 ab 2 Me act1 cd 3 You act2 xy 4 You act2 st</code>
私たちの目標は、User
と Activity
でグループ化し、各グループの PageURL
値を連結することです。 目的の出力:
<code>User Activity PageURL Me act1 ab, cd You act2 xy, st</code>
STUFF() を使用した SQL Server ソリューション
SQL Server では、GROUP BY
と STUFF()
関数を使用してこれを実現できます。
<code class="language-sql">SELECT [User], Activity, STUFF( (SELECT DISTINCT ',' + PageURL FROM TableName WHERE [User] = a.[User] AND Activity = a.Activity FOR XML PATH ('')) , 1, 1, '') AS URLList FROM TableName AS a GROUP BY [User], Activity</code>
説明:
GROUP BY [User], Activity
: User
と Activity
の一意の組み合わせに基づいて行をグループ化します。SELECT
ステートメントは、各グループの個別の PageURL
値を取得します。 ',' PageURL
は、各 URL の前にカンマを追加します。FOR XML PATH('')
: これにより、結果セットが単一の文字列に変換され、URL がカンマで効果的に連結されます。STUFF(..., 1, 1, '')
: これにより、サブクエリによって追加された先頭のカンマが削除され、きれいなカンマ区切りリストが生成されます。結論:
このアプローチでは、GROUP BY
句で定義された各グループ内で列の値をカンマ区切りのリストに効果的に結合します。これは、SQL Server でのデータの要約と操作のための多用途の手法です。 文字列連結の特定の関数は、データベース システム (たとえば、MySQL の GROUP_CONCAT
) に応じて若干異なる場合があることに注意してください。
以上がSQL の GROUP BY 句を使用して列の値をカンマ区切りのリストに結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。