Terkadang Anda mungkin perlu menggabungkan beberapa baris menjadi satu kolom. Berikut cara menggabungkan beberapa baris menjadi satu kolom di MySQL menggunakan fungsi GROUP_CONCAT. Anda juga dapat menggunakannya untuk menggabungkan baris menjadi string, atau mendapatkan beberapa data baris dalam satu baris di MySQL.
Cara Menggabungkan Beberapa Baris Menjadi Satu Kolom di MySQL
Berikut adalah langkah-langkah untuk menggabungkan beberapa baris menjadi satu kolom di MySQL.
Katakanlah Anda memiliki tabel penjualan berikut(sales_rep, sale)
mysql> create table sales(sales_rep varchar(255),sale int); mysql> insert into sales(sales_rep, sale) values('Albert',10),('Bob',23), ('Chris',20),('Dave',35); mysql> select * from sales; +-----------+------+ | sales_rep | sale | +-----------+------+ | Albert | 10 | | Bob | 23 | | Chris | 20 | | Dave | 35 | +-----------+------+
Bonus Baca : Cara Menghitung Running Total di MySQL
Katakanlah Anda ingin melaporkan semua perwakilan penjualan yang penjualannya>10 dengan kueri berikut.
mysql> select sales_rep from sales where sale>10;
Anda akan mendapatkan output berikut
+-----------+ | sales_rep | +-----------+ | Bob | | Chris | | Dave | +-----------+
Namun, kami ingin nama sales_rep hadir dalam satu baris.
Bob, Chris, Dave
Dalam hal ini, kami menggunakan fungsi GROUP_CONCAT untuk menggabungkan beberapa baris menjadi satu kolom.
mysql> select group_concat(sales_rep) from sales2 where sale>10; +-------------------------+ | group_concat(sales_rep) | +-------------------------+ | Bob,Chris,Dave | +-------------------------+
GROUP_CONCAT menggabungkan semua nilai non-null dalam grup dan mengembalikannya sebagai string tunggal.
Jika Anda ingin menghindari duplikat, Anda juga dapat menambahkan DISTINCT dalam kueri Anda. Katakanlah Anda memiliki tabel berikut.
mysql> select * from sales3; +---------+------------+------+ | product | order_date | sale | +---------+------------+------+ | A | 2020-01-01 | 20 | | B | 2020-01-02 | 25 | | B | 2020-01-03 | 15 | | A | 2020-01-04 | 30 | | A | 2020-01-05 | 20 | +---------+------------+------+
Pada tabel di atas, kolom produk berisi nilai duplikat. Jadi kami menggunakan kata kunci DISTINCT untuk memilih nilai unik saja.
mysql> select group_concat(distinct product) from sales3 where sale>10; +--------------------------------+ | group_concat(distinct product) | +--------------------------------+ | A,B | +--------------------------------+
Bonus Baca: Cara Menambahkan Total Baris di MySQL
Anda juga dapat menggunakan fungsi GROUP BY untuk menggabungkan nilai baris untuk setiap grup. Berikut ini contohnya. Katakanlah Anda memiliki tabel berikut.
mysql> create table sales_reps(product varchar(255),sales_rep varchar(255)); mysql> insert into sales_reps(product, sales_rep) values('A','Albert'),('A','Bob'),('A','Chris'), ('B','Dave'),('B','Edgar'),('B','Finch'); mysql> select * from sales_reps; +---------+-----------+ | product | sales_rep | +---------+-----------+ | A | Albert | | A | Bob | | A | Chris | | B | Dave | | B | Edgar | | B | Finch | +---------+-----------+
Berikut adalah kueri tempat kami menggabungkan nama perwakilan untuk setiap produk, menggunakan klausa GROUP BY.
mysql> select product, group_concat(sales_rep) from sales_reps group by product; +---------+-------------------------+ | product | group_concat(sales_rep) | +---------+-------------------------+ | A | Albert,Bob,Chris | | B | Dave,Edgar,Finch | +---------+-------------------------+
Setelah Anda menggabungkan beberapa baris menjadi satu kolom, Anda dapat menggunakan alat pelaporan untuk memplot hasil dalam tabel dan membaginya dengan tim Anda. Berikut adalah contoh tabel yang dibuat menggunakan Ubiq.
Omong-omong, jika Anda ingin membuat grafik, dasbor &laporan dari database MySQL, Anda dapat mencoba Ubiq. Kami menawarkan uji coba gratis selama 14 hari.