Tabel pivot berguna untuk analisis data, memungkinkan Anda menampilkan nilai baris sebagai kolom untuk mendapatkan wawasan dengan mudah. Namun, tidak ada fungsi untuk membuat tabel pivot di MySQL. Jadi, Anda perlu menulis kueri SQL untuk membuat tabel pivot di MySQL. Untungnya ada banyak cara untuk membuat Pivot Table di MySQL. Mari kita lihat satu per satu dengan cepat.
Cara Membuat Tabel Pivot di MySQL
Berikut langkah-langkah membuat tabel pivot di MySQL. Katakanlah Anda memiliki tabel berikut
CREATE TABLE exams ( id int(11) NOT NULL auto_increment, name varchar(15), exam int, score int, PRIMARY KEY (id) ); insert into exams (name,exam,score) values ('Bob',1,70); insert into exams (name,exam,score) values ('Bob',2,77); insert into exams (name,exam,score) values ('Bob',3,71); insert into exams (name,exam,score) values ('Bob',4,70); insert into exams (name,exam,score) values ('Sue',1,89); insert into exams (name,exam,score) values ('Sue',2,87); insert into exams (name,exam,score) values ('Sue',3,88); insert into exams (name,exam,score) values ('Sue',4,89); mysql> select * from exams; +------+------+------+-------+ | id | name | exam | score | +------+------+------+-------+ | 1 | Bob | 1 | 70 | | 2 | Bob | 2 | 77 | | 3 | Bob | 3 | 71 | | 4 | Bob | 4 | 70 | | 5 | Sue | 1 | 89 | | 6 | Sue | 2 | 87 | | 7 | Sue | 3 | 88 | | 8 | Sue | 4 | 89 | +------+------+------+-------+
Katakanlah Anda ingin memutar tabel dengan ujian kolom sehingga membuat 1 baris untuk setiap siswa dan 1 kolom untuk setiap ujian, seperti yang ditunjukkan di bawah ini.
+--------+-----------+-----------+-----------+------------+ | name | exam1 | exam2 | exam3 | exam4 | +--------+-----------+-----------+-----------+------------+ | Bob | 70 | 77 | 71 | 70 | | Sue | 89 | 87 | 88 | 89 | +--------+-----------+-----------+-----------+------------+
Anda dapat membuat tabel pivot di MySQL menggunakan pernyataan IF atau CASE.
Bonus baca: Cara Menghitung Median di MySQL
Membuat Tabel Pivot di MySQL menggunakan pernyataan IF
Berikut kueri SQL mentranspos baris ke kolom menggunakan pernyataan IF.
SELECT name, sum(IF(exam=1, score, NULL)) AS exam1, sum(IF(exam=2, score, NULL)) AS exam2, sum(IF(exam=3, score, NULL)) AS exam3, sum(IF(exam=4, score, NULL)) AS exam4 FROM exams GROUP BY name; +--------+-----------+-----------+-----------+------------+ | name | exam1 | exam2 | exam3 | exam4 | +--------+-----------+-----------+-----------+------------+ | Bob | 70 | 77 | 71 | 70 | | Sue | 89 | 87 | 88 | 89 | +--------+-----------+-----------+-----------+------------+
Dalam kueri di atas, Anda perlu mengelompokkan menurut nama kolom karena Anda ingin 1 baris untuk setiap siswa. Selain itu, Anda perlu memberikan 1 ketentuan untuk setiap kolom yang perlu Anda buat, yaitu, 1 ketentuan untuk setiap ujian
Membuat Tabel Pivot di MySQL menggunakan pernyataan CASE
Berikut kueri SQL untuk mengonversi baris menjadi kolom menggunakan pernyataan CASE.
SELECT name, sum(CASE WHEN exam=1 THEN score ELSE NULL END) AS exam1, sum(CASE WHEN exam=2 THEN score ELSE NULL END) AS exam2, sum(CASE WHEN exam=3 THEN score ELSE NULL END) AS exam3, sum(CASE WHEN exam=4 THEN score ELSE NULL END) AS exam4 FROM exams GROUP BY name; +--------+-----------+-----------+-----------+------------+ | name | exam1 | exam2 | exam3 | exam4 | +--------+-----------+-----------+-----------+------------+ | Bob | 70 | 77 | 71 | 70 | | Sue | 89 | 87 | 88 | 89 | +--------+-----------+-----------+-----------+------------+
Query di atas bekerja mirip dengan yang menggunakan kondisi IF di atas. Anda perlu mengelompokkan menurut kolom tempat Anda ingin memutar data, yaitu nama . Selain itu, Anda perlu menentukan 1 pernyataan KASUS untuk setiap nomor ujian karena Anda ingin membuat kolom terpisah untuk setiap ujian.
Anda juga dapat menggabungkan skor ujian di tabel pivot Anda. Misalnya, jika Anda ingin menjumlahkan nilai ujian1 dan ujian2 dan menampilkannya di kolom yang sama, Anda dapat menggunakan kueri berikut.
SELECT name, sum(CASE WHEN exam=1 or exam=2 THEN score ELSE NULL END) AS exam12, sum(CASE WHEN exam=3 THEN score ELSE NULL END) AS exam3, sum(CASE WHEN exam=4 THEN score ELSE NULL END) AS exam4 FROM exams GROUP BY name; +--------+------------+-----------+-----------+------------+ | name | exam12 | exam2 | exam3 | exam4 | +--------+------------+-----------+-----------+------------+ | Bob | 147 | 77 | 71 | 70 | | Sue | 176 | 87 | 88 | 89 | +--------+------------+-----------+-----------+------------+
Pada tabel di atas, nilai ujian 1 dan ujian 2 telah ditambahkan dan ditampilkan dalam satu kolom ujian12, cukup dengan mengubah kondisi pernyataan KASUS ke-1, dan menghapus pernyataan KASUS ke-2.
Anda dapat menyesuaikan kueri di atas sesuai kebutuhan Anda untuk membuat tabel pivot di MySQL. Anda juga dapat menggunakan alat pelaporan untuk memplot hasil dalam tabel. Berikut contoh tabel yang dibuat menggunakan Ubiq.
Tahukah Anda bahwa Anda dapat membuat tabel pivot di Ubiq hanya dengan drag &drop?
Jika Anda ingin membuat tabel pivot, grafik &dasbor dari database MySQL, Anda dapat mencoba Ubiq. Kami menawarkan uji coba gratis selama 14 hari.