05 January 2016

Membuat Pivot Table pada MySQL

Pivot table di buat untuk memudahkan dalam menganalisa suatu laporan sehingga akan mempercepat dalam pengambilan keputusan. Contoh kasus :

Table kredit dengan tampilan record seperti di bawah ini :


Jika table diatas dijadikan laporan maka sulit bagi manajer atau pengambil keputusan dalam menganalisa, sudah berapa pinjaman yang dilakukan oleh setiap karyawan karena bercampur menjadi satu. Dengan demikian di butuhkan pivot table untuk mengelompokan berdasarkan nik dan pinjaman ke-n nya. Harusnya tampilan yang tepat yang di gunakan untuk mempercepat proses analisa data adalah sebagai berikut :


Pasti akan banyak pertanyaan ? mengapa sejak awal tidak di susun seperti gambar yang ke dua saat melakukan pembentukan table. Jawabanya, jika sejak awal sudah di set seperti gambar kedua :

  1. Jika suatu saat perusahaan mengeluarkan kebijakan untuk memberikan pinjaman sampai ke 6, maka kita harus menambahkan 3 field atau atribut lagi. Ini akan tidak efektif jika perusahaan terus berubah-ubah dalam mengelurakan kebijakan.
  2. Akan terdapat ke kurang efisianan pada field-field tertentu, misalnya : karyawan umumnya hanya melakukan peminjaman hanya sampai 2, maka filed ke 3 akan banyak bernilai 0.
Setelah mengetahui alasannya, maka kita akan melakukan pivot table dari table pertama menjadi seperti table ke 2.

Cara kerjanya :

1. Buatlah struktur table kredit seperti berikut ini dan kemudian sisipkan recordnya sesuai dengan yang tertera pada gambar pertama.


2. Kemudian sisipkan pada tab SQL terapkan perintah SQL seperti berikut ini :

select nik,sum(jumlah*(1-abs(sign(pinjam_ke-1)))) as pinjam1,sum(jumlah*(1-abs(sign(pinjam_ke-2)))) as pinjam2, sum(jumlah*(1-abs(sign(pinjam_ke-3)))) as pinjam3 from kredit group by nik

Keterangan :

sign(pinjam_ke-n) => menetapkan nilai hanya untuk yang pinjaman_ke n saja sesuai dengan yang terdpata pada table pinjaman_ke. Misalnya, jika ingin menetapkan pinjaman yang ke 4 maka sign(pinjam_ke-4). Tanda “-“ setelah pinjam_ke bukan bentuk pengurangan melainkan penetapan.

abs(nilai) => berfungsi untuk menetapkan nilai absolut dari nilai yang bersangkutan.

sum() => fungsi agregat yang berfungsi untuk menghitung total nilai keseluruhan.

group by atribut => mengelompokan record berdasarkan atributnya. Misalnya : group by nik maksudnya di kelompokan berdasarkan nik sehingga tidak keluar nik dengan nilai yanga sama.

Semoga bermanfaat. Sukses selalu !

No comments:

Post a Comment