Traffine I/O

Bahasa Indonesia

2023-03-05

GROUP_CONCAT dalam MySQL

GROUP_CONCAT dalam MySQL

Dalam database SQL, kita sering perlu memanipulasi dan mengelola data. MySQL, salah satu sistem manajemen database paling populer, menyediakan berbagai fungsi untuk membantu kita melakukan tugas-tugas ini dengan efisien. Salah satu fungsi tersebut adalah fungsi GROUP_CONCAT.

Fungsi GROUP_CONCAT dalam MySQL digunakan untuk menggabungkan data dari beberapa baris menjadi satu bidang. Ini sangat berguna dalam situasi output nilai ganda di mana pernyataan group by tradisional akan menghasilkan beberapa baris data untuk setiap grup.

Sintaksis GROUP_CONCAT

Berikut adalah sintaks dasar dari fungsi GROUP_CONCAT:

sql
GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])
  • DISTINCT: Digunakan untuk menghapus entri duplikat.
  • expr: Ini adalah kolom atau data yang ingin Anda gabungkan.
  • ORDER BY: Digunakan untuk mengurutkan data yang digabungkan.
  • SEPARATOR: Memungkinkan Anda untuk menambahkan pemisah antara data yang digabungkan. Pemisah default adalah koma (,).

Contoh-contoh GROUP_CONCAT

Contoh Sederhana GROUP_CONCAT

Untuk contoh sederhana, pertimbangkan tabel bernama Students dengan data berikut:

ID Name Subject
1 Alice Math
2 Alice Science
3 Bob Math
4 Bob English

Jika kita ingin mencantumkan semua mata pelajaran untuk setiap siswa, kita dapat menggunakan GROUP_CONCAT sebagai berikut:

sql
SELECT Name, GROUP_CONCAT(Subject)
FROM Students
GROUP BY Name;
Name GROUP_CONCAT(Subject)
Alice Math,Science
Bob Math,English

GROUP_CONCAT dengan DISTINCT

Pertimbangkan tabel Orders dengan data berikut:

OrderID Customer Product
1 Alice Apple
2 Alice Banana
3 Alice Apple
4 Bob Cherry

Kita dapat mencantumkan produk yang berbeda untuk setiap pelanggan menggunakan GROUP_CONCAT dengan DISTINCT sebagai berikut:

sql
SELECT Customer, GROUP_CONCAT(DISTINCT Product)
FROM Orders
GROUP BY Customer;
Customer GROUP_CONCAT(DISTINCT Product)
Alice Apple,Banana
Bob Cherry

GROUP_CONCAT dengan ORDER BY

Jika kita ingin mengurutkan daftar yang digabungkan, kita dapat melakukannya dengan ORDER BY. Dengan menggunakan tabel Orders yang sama seperti di atas, kita dapat mengurutkan produk secara alfabetis sebagai berikut:

sql
SELECT Customer, GROUP_CONCAT(Product ORDER BY Product ASC)
FROM Orders
GROUP BY Customer;
Customer GROUP_CONCAT(Product ORDER BY Product ASC)
Alice Apple,Apple,Banana
Bob Cherry

GROUP_CONCAT dengan SEPARATOR

Jika kita ingin menggunakan pemisah selain koma, kita dapat menggunakan SEPARATOR. Misalnya, jika kita ingin memisahkan produk dengan titik koma:

sql
SELECT Customer, GROUP_CONCAT(Product SEPARATOR ';')
FROM Orders
GROUP BY Customer;
Customer GROUP_CONCAT(Product SEPARATOR ';')
Alice Apple;Banana;Apple
Bob Cherry

Referensi

https://www.mysqltutorial.org/mysql-group_concat/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!