Menghitung field/kolom pada tabel MySQL dengan kondisi tertentu dengan COUNT IF
melanjutkan artikel sebelumnya yang sebelumnya telah kita bahas disini, pada kesempatan kali ini kita akan membahas cara untuk menghitung jumlah field/kolom pada tabel dengan kondisi tertentu yang harus dipenuhi dan dikelompokkan pada field tertentu, untuk contoh tabel yang akan kita gunakan, dapat dilihat disini.
Seperti kita ketahui, untuk menghitung row/baris pada tabel, kita menggunakan fungsi COUNT, yang otomatis menghitung jumlah row yang ada nilainya (row dengan nilai NULL tidak akan dihitung). baris yang dihitung dapat dilakukan dengan 2 cara yaitu:
- COUNT(*) yaitu menghitung row untuk semua field
- COUNT(field_name) yaitu menghitung row untuk field tertentu
Sedangkan fungsi count dibag menjadi 2 yaitu:
- COUNT untuk menghitung semua row walaupun ada duplikasi data
- COUNT (DISTINCT) untuk menghitung row yang unique
melanjutkan pada artikel sebelumnya, sekarang kita akan menghitung jumlah item yang terjual berdasarkan tahun panjualan, query yang kita gunakan :
SELECT COUNT(IF(tgl_byr LIKE "2011%", jml_byr, NULL)) AS item_2011,
COUNT(IF(tgl_byr LIKE "2010%", jml_byr, NULL)) AS item_2010,
SUM(IF(tgl_byr LIKE "2011%", jml_byr, 0)) AS jml_2011,
SUM(IF(tgl_byr LIKE "2010%", jml_byr, 0)) AS jml_2010
FROM tunai
yang akan menghasilkan:
SELECT id_pelanggan,
id_cabang,
COUNT(IF(tgl_byr LIKE "2011%", jml_byr, NULL)) AS item_2011,
COUNT(IF(tgl_byr LIKE "2010%", jml_byr, NULL)) AS item_2010,
SUM(IF(tgl_byr LIKE "2011%", jml_byr, 0)) AS jml_2011,
SUM(IF(tgl_byr LIKE "2010%", jml_byr, 0)) AS jml_2010
FROM tunai
GROUP BY id_pelanggan, id_cabang
maka hasil yang akan kita peroleh:
+--------------+-----------+-----------+-----------+----------+----------+
| id_pelanggan | id_cabang | item_2011 | item_2010 | jml_2011 | jml_2010 |
+--------------+-----------+-----------+-----------+----------+----------+
| 012546 | 12 | 1 | 2 | 1500000 | 4000000 |
| 015558 | 01 | 1 | 1 | 2900000 | 775000 |
| 020011 | 02 | 1 | 1 | 1725000 | 2450000 |
| 020011 | 05 | 3 | 0 | 3500000 | 0 |
| 027845 | 07 | 2 | 1 | 6499000 | 2730000 |
+--------------+-----------+-----------+-----------+----------+----------+
5 rows in set (0.00 sec)
Related
- Menghitung Field/Kolom Pada Tabel MySQL/Postgre Dengan Kondisi Tertentu Menggunakan COUNT IF
- Install paket aplikasi dengan Tasksel
- Perintah UPDATE pada MySQL
- PERINTAH DASAR-DASAR MYSQL