Sabtu, 30 Juli 2011

MySQL : Cross Tabulations

Cross Tabulations atau yang biasa di singkat dengan CrossTab adalah sebuah bentuk laporan data yang di kelompokan dan dihubungkan berdasarkan dua variable atau faktor sehingga menciptakan tabel yang dinamakan table kontingensi.





Tabel kontigensi adalah table seperti pada umumnya terdiri dari baris dan kolom tetapi memiliki ciri khusus yaitu menampilkan data yang terkelompok dan terhubung berdasarkan dua faktor atau variable.

Cross Tabulations banyak digunakan dalam statistik. Cross Tabulations dapat dibuat oleh berbagai software statistik dan spreadsheet (contoh: Microsoft Excel, OpenOffice.org Calc, Lotus 1-2-3) yang biasa di kenal dengan istilah Tabel Pivot.

Pada database MySQL Anda dapat menciptakan sebuat Cross Tabulations dengan cara yang cukup sederhana.


Berikut ini adalah sebuah contoh membuat Cross Tabulation pada MySQL dengan sebuah kasus tentang statistik jenis kelamin siswa di beberapa kelas.

1. Buatlah sebuah table siswa dengan struktur seperti dibawah ini.
CREATE TABLE `siswa` (
  `id` char(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `nama` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `kelamin` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,
  `kelas` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

2. Masukan data sample siswa seperti yang ditunjukan dibawah ini.
+------+-------------------+---------+---------+
| id   | nama              | kelamin | kelas   |
+------+-------------------+---------+---------+
| 0001 | DENDIE SANJAYA    | L       | KELAS 1 |
| 0002 | YULIANTI          | W       | KELAS 1 |
| 0003 | PITRASCHA ADITYIA | L       | KELAS 1 |
| 0004 | SRI HARTATI       | w       | KELAS 2 |
| 0005 | RIZKI PRIHANTO    | L       | KELAS 2 |
| 0006 | RIANO OSKAR       | L       | KELAS 2 |
| 0007 | HERU SASONGKO     | L       | KELAS 3 |
| 0008 | KHEDA GINANJAR    | L       | KELAS 3 |
| 0009 | MIFTAH KAMALUDIN  | L       | KELAS 3 |
+------+-------------------+---------+---------+

3. Membuat query untuk menghasilkan Cross Tabulations dengan variable/ faktor jenis kelamin dan kelas
select kelas, sum(if(kelamin='L',1,0)) as 'PRIA', sum(if(kelamin='W',1,0)) as 'WANITA', count(*) as TOTAL
from siswa
group by kelas
Berikut ini penjelasan dari bagian penting query diatas
  • sum(if(kelamin='L',1,0)) as 'PRIA' -> Mengartikan apabila menemukan data hurup L pada field KELAMIN maka lakukan penambahan sebanyak satu angka. kemudian simpan hasil perhitungannya di kolom bernama PRIA.
  • sum(if(kelamin='W',1,0)) as 'WANITA' -> Mengartikan apabila menemukan data hurup W pada field KELAMIN maka lakukan penambahan sebanyak satu angka. kemudian simpan hasil perhitungannya di kolom bernama WANITA.
  • count(*) as TOTAL -> Mengartikan melakukan perhitungan seluruh siswa baik yang berkelamin pria maupun wanita.
  • group by kelas -> mengartikan data akan di tampilkan secara berkelompok berdasarkan kelas.

4. Berikut ini adalah hasil dari query Cross Tabulations diatas.
+---------+------+--------+-------+
| kelas   | PRIA | WANITA | TOTAL |
+---------+------+--------+-------+
| KELAS 1 |    2 |      1 |     3 |
| KELAS 2 |    2 |      1 |     3 |
| KELAS 3 |    3 |      0 |     3 |
+---------+------+--------+-------+

3 komentar:

  1. ini yang kucari mas ...mantap super mantap terima kasih banyak
    semoga bermanfaat seterusnya

    BalasHapus
    Balasan
    1. Alhamdulilah kalau bermanfaat, Makasih

      Hapus
  2. mas , ane mo tanya nih...
    gmn caranya memformat tipe data pada saat membuat tabel?misal : saya ingin pada tipe data time nanti ketika insert data hasilnya menjadi 06:00 . setahu saya dari banyak tutorial cuman query select saja yang bisa dilakukan.., sebelumnya saya ucapkan terima kasih mas ..

    BalasHapus