ホームページ >データベース >mysql チュートリアル >SQL の GROUP BY を使用して、ユーザーとアクティビティに基づいてページ URL を単一のカンマ区切りの文字列に結合するにはどうすればよいですか?
SQL の GROUP BY を使用したページ URL の集計
データベース テーブルには、User
、Activity
、および PageURL
列が含まれています。 目標は、一意の PageURL
と User
の組み合わせごとに Activity
エントリを単一のカンマ区切り文字列に統合することです。
これは、GROUP BY
を文字列集約手法と組み合わせて使用することで実現できます。 その方法は次のとおりです:
<code class="language-sql">SELECT User, Activity, STRING_AGG(PageURL, ',') AS CombinedPageURLs FROM TableName GROUP BY User, Activity;</code>
このクエリは、STRING_AGG
関数 (PostgreSQL、SQL Server 2017 以降などの多くの最新 SQL 言語で利用可能) を直接使用して、PageURL
と User
で定義された各グループ内の Activity
値を連結します。 結果のカンマ区切り文字列は CombinedPageURLs
列に割り当てられます。
STRING_AGG を使用しない SQL 方言の代替:
SQL データベースが STRING_AGG
をサポートしていない場合は、FOR XML PATH
:
<code class="language-sql">SELECT User, Activity, STUFF(( SELECT ',' + PageURL FROM TableName t2 WHERE t2.User = t1.User AND t2.Activity = t1.Activity FOR XML PATH('') ), 1, 1, '') AS CombinedPageURLs FROM TableName t1 GROUP BY User, Activity;</code>
この代替案では、FOR XML PATH('')
を含むサブクエリを使用してカンマ区切りの文字列を作成し、STUFF
で先頭のカンマを削除します。 この方法は、古いバージョンの SQL Server と互換性があります。 特定のデータベース スキーマに一致するようにテーブル名と列名を変更することを忘れないでください。 出力には、集約された URL を含む CombinedPageURLs
列が表示されます。
以上がSQL の GROUP BY を使用して、ユーザーとアクティビティに基づいてページ URL を単一のカンマ区切りの文字列に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。