Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan dan Kumpulan Baris dengan Cekap dalam Oracle?
Menggabungkan dan Menghimpunkan Baris dalam Oracle: Meninjau Semula Manipulasi Baris dan Teknik Pengagregatan
Dalam bidang manipulasi dan pengagregatan data, Oracle menawarkan serba boleh set fungsi yang membolehkan pemprosesan data yang besar dengan cekap. Satu tugas biasa melibatkan penyatuan dan pengumpulan berbilang baris untuk mencapai hasil yang diingini.
Pertimbangkan senario berikut: Memandangkan jadual dengan lajur NAME dan GROUP_NAME, anda berhasrat untuk mengubah data menjadi jadual baharu yang mana baris dikumpulkan berdasarkan pada GROUP_NAME dan nilai NAME yang sepadan digabungkan dalam setiap kumpulan.
Satu pendekatan untuk tugas ini adalah untuk memanfaatkan fungsi SYS_CONNECT_BY_PATH, seperti yang ditunjukkan dalam pernyataan SQL yang disediakan. Pendekatan ini secara berulang membina rentetan bercantum dengan menyambungkan nilai baris dalam setiap kumpulan.
Walau bagaimanapun, untuk senario yang lebih maju, fungsi LISTAGG menawarkan penyelesaian yang canggih. Disokong dalam Oracle 11g dan lebih baru, LISTAGG membenarkan pengagregatan nilai yang cekap dalam setiap kumpulan, memisahkannya dengan pembatas tertentu (seperti koma).
SELECT group_name, LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) "names" FROM name_table GROUP BY group_name
Untuk versi terdahulu Oracle yang kekurangan LISTAGG, pertimbangkan menggunakan fungsi analitikal seperti ROW_NUMBER dan SYS_CONNECT_BY_PATH untuk mencapai penggabungan baris dan pengelompokan.
select grp, ltrim(max(sys_connect_by_path (name, ',' )), ',') scbp from (select name, grp, row_number() over (partition by grp order by name) rn from tab ) start with rn = 1 connect by prior rn = rn-1 and prior grp = grp group by grp order by grp
Dengan meneroka teknik ini, anda boleh menggabungkan dan mengumpulkan baris dengan berkesan dalam Oracle, mengendalikan manipulasi data yang kompleks dan keperluan pengagregatan dengan mudah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan dan Kumpulan Baris dengan Cekap dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!