Query MySQL Countif

Sedikit berbagi nih ceritanya. Ternyata eh ternyata, sintaks SQL menyediakan struktur kontrol yang sangat bermanfaat. Kata kuncinya ‘IF’ yang berarti ‘jika’. Menggunakan kata kunci yang satu ini kita bisa melakukan operasi semacam countif meskipun fungsi built-in yang bernama countif di bahasa ini tidak ada. Mau tahu caranya?

Misalkan kita memiliki tabel data pegawai dengan bentuk salah satu potongannya seperti berikut:

tabel

Selanjutnya kita akan menampilkan query dengan kolom-kolom satker, pegawai laki-laki, pegawai perempuan, dan jumlah pegawai.

header query

Nah, berikut adalah sintaks query yang saya gunakan:

SELECT 
satker,
SUM(IF(sex=1,1,0)) AS laki,
SUM(IF(sex=2,1,0)) AS perempuan, 
COUNT(*) AS jumlah 
FROM pegawai 
GROUP BY satker;

Jadi, sintaks penggantinya adalah SUM – IF.

SUM(IF(sex=1,1,0)) AS laki

Sintaks di atas secara sederhana dapat diartikan sebagai berikut: jumlahkan (SUM) nilai-nilai ini, di mana jika (IF) sex=1 maka nilainya 1, sedangkan jika sex bernilai selain 1 maka nilanya 0. Dari sintaks di atas juga dapat disimpulkan bahwa IF memiliki tiga parameter, yakni kondisi sebagai parameter pertama, nilai jika kondisi terpenuhi sebagai parameter kedua, dan nilai jika kondisi tidak terpenuhi. Pada sintaks di atas, parameter pertama adalah kondisi sex=1, parameter kedua adalah 1, dan parameter kedua adalah 0.

query dan hasilnya

Masih galau? Silakan dicoba sendiri ya… Ini sintaks SQL untuk tabelnya:

DROP TABLE IF EXISTS `pegawai`;
CREATE TABLE `pegawai` (
  `satker` varchar(5) DEFAULT NULL,
  `nama` varchar(15) DEFAULT NULL,
  `sex` tinyint(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `pegawai` (`satker`, `nama`, `sex`) VALUES
('100',	'Ibarat',	1),
('101',	'Gajah',	2),
('101',	'Naikdi',	1),
('100',	'Pelupuk',	2),
('102',	'Mata',	1),
('103',	'Tapi',	2),
('104',	'Sayangna',	1),
('103',	'Engkau',	2),
('104',	'Tidak',	1),
('104',	'Melihatna',	2),
('102',	'Jua',	1);

Selamat belajar, semoga bermanfaat!

Pos ini dipublikasikan di Developer dan tag , , . Tandai permalink.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s