Cara Menggunakan Fungsi LISTAGG di Oracle untuk Mendaftar Semua Nilai Dalam Grup - Bagaimana-Untuk

Cara Menggunakan Fungsi LISTAGG di Oracle untuk Mendaftar Semua Nilai Dalam Grup

Saya menjelaskan bagaimana Anda dapat melakukan agregasi string dalam Oracle SQL untuk menggabungkan daftar nilai menjadi string agregat tunggal untuk grup data yang berbeda.

Pernahkah Anda perlu menggabungkan daftar hasil menjadi satu hasil?

Pernahkah Anda memiliki daftar nama, dan ingin menggabungkannya ke dalam daftar nama yang dipisahkan koma, tanpa menulis kode yang berantakan atau khusus?

Nah, dalam Oracle SQL, ini cukup mudah.

Ada fungsi yang dibangun khusus untuk ini. Itu bukan sesuatu yang saya tahu ketika saya belajar Oracle awalnya - itu hanya sesuatu yang saya pelajari di tempat kerja.

Fungsi yang saya bicarakan adalah fungsi LISTAGG.

Fungsi LISTAGG memungkinkan Anda menggabungkan nilai dari daftar menjadi nilai tunggal. Atau, Anda dapat menggunakannya untuk menggabungkannya ke beberapa nilai dalam grup.

Mari saya tunjukkan apa yang saya maksud.

Sintaks fungsi LISTAGG adalah:

LISTAGG (size_expr [, pembatas]) DALAM KELOMPOK (order_by_clause) [OVER query_partition_clause]

Meas_expr adalah nilai yang ingin Anda gabungkan atau gabungkan. Order_by_clause adalah cara Anda ingin memesan data dalam daftar, dan query_partition_clause digunakan untuk mengelompokkan data sebagai fungsi analitik.

3 Langkah total

Langkah 1: Lihat Data Anda

Katakanlah Anda memiliki daftar nama di tabel pelanggan Anda:

negara, first_name
USA, John
Inggris, Mark
Meksiko, Sarah
AS, Michelle
USA, Peter
Meksiko, Maria

Katakan juga Anda ingin keluaran seperti ini:

John, Mark, Sarah, Michelle, Peter, Maria

Untuk melakukan ini tanpa fungsi LISTAGG, Anda mungkin perlu menulis blok kode PL / SQL, atau PILIH rekaman ke dalam aplikasi Anda dan gunakan fungsi lain untuk mengubahnya menjadi daftar yang dipisahkan koma.

Di sinilah LISTAGG masuk.

Langkah 2: Tulis Fungsi LISTAGG Anda

Anda dapat menggunakan LISTAGG untuk mengubahnya menjadi daftar yang dipisahkan koma:

LISTAGG (first_name, ',') WITHIN GROUP (diurutkan berdasarkan first_name)

Ini melakukan agregasi pada kolom first_name, dengan karakter koma dan spasi yang digunakan sebagai pembatas. Ia tahu untuk tidak menempatkan pembatas di akhir kata terakhir.

Langkah 3: Gunakan GROUP BY dan LISTAGG

Bagaimana jika Anda ingin mendapatkan nilai agregat untuk setiap negara?

Itu mudah dilakukan dengan LISTAGG.

Cukup pilih bidang negara juga.

SELECT country, LISTAGG (first_name, ',') WITHIN GROUP (diurutkan berdasarkan first_name)
DARI tablename
KELOMPOK MENURUT negara

Anda akan mendapatkan hasil seperti ini:

negara, listagg
AS - John, Michelle, Peter
Inggris - Mark
Meksiko - Sarah, Maria

Ini hanya beberapa contoh cara Anda dapat menggunakan LISTAGG untuk mengubah data Anda menjadi daftar nilai. Ingatlah fungsi ini ketika Anda menulis pertanyaan Anda, dan mungkin berguna ketika Anda perlu menyelesaikan masalah ini.

Saya telah menulis panduan yang lebih luas tentang fungsi ini dengan contoh pada Complete IT Professional, yang dapat Anda baca di bawah.