使用 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
函數(在許多現代SQL 方言中可用,如PostgreSQL、SQL Server 2017 及更高版本等)來連接由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中文網其他相關文章!