Cara Mengubah Bentuk Tabel untuk Mengubah Baris Menjadi Kolom di MySQL

MySQL adalah salah satu sistem manajemen basis data relasional yang paling populer di dunia. MySQL memungkinkan kita untuk menyimpan, mengelola, dan menganalisis data dalam bentuk tabel. Tabel terdiri dari baris dan kolom yang merepresentasikan entitas dan atribut data. Namun, terkadang kita perlu mengubah bentuk tabel untuk mengubah baris menjadi kolom atau sebaliknya. Hal ini disebut sebagai transposisi tabel.

Transposisi tabel dapat berguna untuk beberapa alasan, seperti:

  • Mempermudah visualisasi dan pemahaman data
  • Mengoptimalkan kinerja query dan indeks
  • Menyesuaikan struktur data dengan kebutuhan bisnis atau aplikasi
  • Melakukan operasi agregasi atau perhitungan pada data
script mysql

Namun, MySQL tidak memiliki fungsi bawaan untuk melakukan transposisi tabel secara langsung. Oleh karena itu, kita perlu menggunakan teknik atau trik tertentu untuk mencapai tujuan ini. Dalam artikel ini, kita akan membahas beberapa cara untuk mengubah bentuk tabel untuk mengubah baris menjadi kolom di MySQL, beserta contoh dan penjelasannya.

Cara 1: Menggunakan Fungsi Agregasi dan Klausa GROUP BY

Salah satu cara untuk mengubah bentuk tabel untuk mengubah baris menjadi kolom di MySQL adalah dengan menggunakan fungsi agregasi dan klausa GROUP BY. Fungsi agregasi adalah fungsi yang mengambil sekumpulan nilai sebagai input dan mengembalikan satu nilai sebagai output. Beberapa fungsi agregasi yang umum digunakan di MySQL adalah:

  • SUM(): Menghitung jumlah total dari sekumpulan nilai
  • AVG(): Menghitung rata-rata dari sekumpulan nilai
  • MIN(): Mengembalikan nilai terkecil dari sekumpulan nilai
  • MAX(): Mengembalikan nilai terbesar dari sekumpulan nilai
  • COUNT(): Menghitung jumlah nilai yang ada dalam sekumpulan nilai

Klausa GROUP BY adalah klausa yang digunakan untuk mengelompokkan baris yang memiliki nilai yang sama pada satu atau lebih kolom. Klausa GROUP BY biasanya digunakan bersama dengan fungsi agregasi untuk menghitung nilai agregat untuk setiap kelompok.

Untuk mengubah bentuk tabel untuk mengubah baris menjadi kolom dengan menggunakan fungsi agregasi dan klausa GROUP BY, kita perlu melakukan langkah-langkah berikut:

  • Tentukan kolom yang akan menjadi baris baru dalam tabel hasil. Kolom ini biasanya merupakan kolom yang memiliki nilai yang berbeda-beda dan tidak terlalu banyak. Misalnya, kolom tahun, bulan, kategori, jenis, dll.
  • Tentukan kolom yang akan menjadi kolom baru dalam tabel hasil. Kolom ini biasanya merupakan kolom yang memiliki nilai yang sama atau terbatas untuk setiap baris. Misalnya, kolom nama, produk, merek, dll.
  • Tentukan fungsi agregasi yang akan digunakan untuk menghitung nilai untuk setiap kombinasi baris dan kolom baru. Fungsi agregasi ini tergantung pada jenis data dan tujuan analisis kita. Misalnya, SUM(), AVG(), MIN(), MAX(), dll.
  • Buat query SQL yang menggunakan fungsi agregasi dan klausa GROUP BY untuk menghasilkan tabel hasil yang diinginkan.

Mari kita lihat contoh untuk memahami cara ini lebih baik. Misalkan kita memiliki tabel berikut yang menyimpan data penjualan produk untuk setiap bulan dan kategori:

monthcategorysales
JanA100
JanB200
JanC300
FebA150
FebB250
FebC350
MarA200
MarB300
MarC400

Tabel ini memiliki tiga kolom: month, category, dan sales. Kita ingin mengubah bentuk tabel ini untuk mengubah baris menjadi kolom, sehingga kita dapat melihat total penjualan untuk setiap kategori dan bulan dalam satu tabel. Tabel hasil yang kita inginkan adalah sebagai berikut:

categoryJanFebMar
A100150200
B200250300
C300350400

Untuk mencapai tujuan ini, kita dapat menggunakan cara 1 dengan langkah-langkah berikut:

  • Tentukan kolom yang akan menjadi baris baru dalam tabel hasil. Dalam kasus ini, kolom category akan menjadi baris baru, karena memiliki nilai yang berbeda-beda dan tidak terlalu banyak (A, B, C).
  • Tentukan kolom yang akan menjadi kolom baru dalam tabel hasil. Dalam kasus ini, kolom month akan menjadi kolom baru, karena memiliki nilai yang sama atau terbatas untuk setiap baris (Jan, Feb, Mar).
  • Tentukan fungsi agregasi yang akan digunakan untuk menghitung nilai untuk setiap kombinasi baris dan kolom baru. Dalam kasus ini, kita akan menggunakan fungsi SUM() untuk menghitung total penjualan untuk setiap kategori dan bulan.
  • Buat query SQL yang menggunakan fungsi agregasi dan klausa GROUP BY untuk menghasilkan tabel hasil yang diinginkan. Query SQL yang dapat kita gunakan adalah sebagai berikut:
SELECT
  category,
  SUM(CASE WHEN month = 'Jan' THEN sales ELSE 0 END) AS Jan,
  SUM(CASE WHEN month = 'Feb' THEN sales ELSE 0 END) AS Feb,
  SUM(CASE WHEN month = 'Mar' THEN sales ELSE 0 END) AS Mar
FROM
  sales_table
GROUP BY
  category;

Query ini melakukan hal-hal berikut:

  • Memilih kolom category dari tabel sales_table
  • Menggunakan fungsi SUM() dan CASE untuk menghitung total penjualan untuk setiap kategori dan bulan. CASE adalah pernyataan bersyarat yang mengembalikan nilai berdasarkan kondisi yang diberikan. Dalam query ini, kita menggunakan CASE untuk memeriksa nilai bulan dan mengembalikan nilai penjualan jika sesuai, atau 0 jika tidak. Misalnya, SUM(CASE WHEN month = ‘Jan’ THEN sales ELSE 0 END) akan mengembalikan total penjualan untuk bulan Januari untuk setiap kategori, atau 0 jika tidak ada penjualan untuk bulan tersebut.
  • Memberi nama alias untuk setiap kolom baru dengan menggunakan AS. Alias adalah nama alternatif yang dapat kita berikan untuk kolom atau tabel untuk mempermudah penulisan dan pembacaan query. Dalam query ini, kita memberi nama alias untuk setiap kolom baru dengan nama bulan yang sesuai, seperti Jan, Feb, Mar.
  • Menggunakan klausa GROUP BY untuk mengelompokkan baris berdasarkan kolom category. Klausa GROUP BY akan membuat satu baris untuk setiap nilai unik pada kolom category, dan menghitung nilai agregat untuk setiap kolom lainnya.

Query ini akan menghasilkan tabel hasil yang kita inginkan, seperti yang ditunjukkan di atas.

Artikel Terbaru