Mengagregatkan URL Halaman dengan SQL GROUP BY
Jadual pangkalan data anda termasuk lajur User
, Activity
dan PageURL
. Matlamatnya adalah untuk menyatukan entri PageURL
untuk setiap gabungan User
dan Activity
unik ke dalam rentetan dipisahkan koma tunggal.
Ini boleh dicapai menggunakan GROUP BY
bersama-sama dengan teknik pengagregatan rentetan. Begini caranya:
<code class="language-sql">SELECT User, Activity, STRING_AGG(PageURL, ',') AS CombinedPageURLs FROM TableName GROUP BY User, Activity;</code>
Pertanyaan ini secara langsung menggunakan fungsi STRING_AGG
(tersedia dalam banyak dialek SQL moden seperti PostgreSQL, SQL Server 2017 dan lebih baru, dsb.) untuk menggabungkan nilai PageURL
dalam setiap kumpulan yang ditakrifkan oleh User
dan Activity
. Rentetan dipisahkan koma yang terhasil ditetapkan pada lajur CombinedPageURLs
.
Alternatif untuk Dialek SQL Tanpa STRING_AGG:
Jika pangkalan data SQL anda tidak menyokong STRING_AGG
, anda boleh menggunakan pendekatan yang sama menggunakan 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>
Alternatif ini menggunakan subkueri dengan FOR XML PATH('')
untuk mencipta rentetan yang dipisahkan koma dan STUFF
mengalih keluar koma di hadapan. Kaedah ini serasi dengan versi SQL Server yang lebih lama. Ingat untuk menyesuaikan nama jadual dan lajur agar sepadan dengan skema pangkalan data khusus anda. Output menyediakan lajur CombinedPageURLs
yang mengandungi URL agregat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan URL Halaman menjadi Rentetan Dipisahkan Koma Tunggal Berdasarkan Pengguna dan Aktiviti Menggunakan SQL GROUP BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!