Pada kesempatan kali ini kita akan membahas cara menjumlahkan nilai pada field tertentu dengan kondisi tertentu menggunakan fungsi SUM dan IF. Fungsi SUM digunakan untuk menjumlahkan nilai pada row yang ada pada suatu kolom, sedangkan fungsi IF digunakan untuk menguji nilai pada row tersebut (berdasarkan satu kondisi tertentu) sehingga diperoleh nilai yang akan digunakan dalam proses penjumlahan. Persiapan DataPada tutorial ini, kita akan menggunakan tiga tabel. Untuk memudahkan, kita akan membuat tiga tabel sederhana yaitu tabel penjualan, pelanggan, dan produk.  Skema tabel dan hubungan (relasi) antar tabel tampak seperti gambar berikut: File SQL diatas dapat digunakan untuk membuat semua tabel yang diperlukan beserta contoh datanya. Pada tutorial ini, kita akan mengolah data pada tabel penjualan, agar lebih mudah dipahami, berikut ini penjelasan field pada tabel penjualan:
Adapun isi dari tabel penjualan seperti tampak pada tabel berikut: +--------------+--------------+-----------+------------+---------+ | id_transaksi | id_pelanggan | id_produk | tgl_byr | jml_byr | +--------------+--------------+-----------+------------+---------+ | 1 | 1 | 111 | 2016-02-02 | 1500000 | | 2 | 1 | 112 | 2016-03-10 | 1250000 | | 3 | 1 | 113 | 2016-04-10 | 750000 | | 4 | 2 | 112 | 2015-02-02 | 500000 | | 5 | 2 | 112 | 2015-03-10 | 3500000 | | 6 | 2 | 113 | 2016-04-10 | 1500000 | | 7 | 3 | 115 | 2016-02-02 | 1550000 | | 8 | 3 | 115 | 2015-03-10 | 2730000 | | 9 | 3 | 111 | 2016-04-10 | 4949000 | | 10 | 1 | 115 | 2015-02-02 | 2450000 | | 11 | 1 | 111 | 2016-03-10 | 1725000 | | 12 | 4 | 111 | 2015-04-10 | 775000 | | 13 | 4 | 115 | 2016-04-10 | 2900000 | +--------------+--------------+-----------+------------+---------+ Sedangkan untuk tabel pelanggan, data yang akan kita gunakan adalah sebagai berikut: +--------------+---------+-----------+---------+ | id_pelanggan | nama | alamat | id_staf | +--------------+---------+-----------+---------+ | 1 | Alfa | Jakarta | 1 | | 2 | Beta | Semarang | 1 | | 3 | Charlie | Surabaya | 2 | | 4 | Delta | Surakarta | 3 | +--------------+---------+-----------+---------+ Penggunaan Fungsi SUM IFSelanjutnya, mari kita gunakan fungsi SUM dan IF untuk melakukan penjumlahan semua penjualan berdasarkan tahun, query yang kita gunakan adalah:
Hasil yang kita peroleh: +----------+----------+ | jml_2016 | jml_2015 | +----------+----------+ | 16124000 | 9955000 | +----------+----------+ Pada query diatas, MySQL akan melakukan pengecekan pada tiap-tiap row satu per satu. MySQL akan menjalankan fungsi
Penting diperhatikan bahwa antara Selanjutnya, jika kita ingin mengetahui jumlah pembelian per pelanggan per tahun, maka kita dapat mengelompokkan data berdasarkan kolom
Hasil yang kita dapatkan: +--------------+----------+----------+---------+ | id_pelanggan | jml_2016 | jml_2015 | TOTAL | +--------------+----------+----------+---------+ | 1 | 5225000 | 2450000 | 7675000 | | 2 | 1500000 | 4000000 | 5500000 | | 3 | 6499000 | 2730000 | 9229000 | | 4 | 2900000 | 775000 | 3675000 | +--------------+----------+----------+---------+ Terakhir, mari kita tampilkan informasi nama pelanggan dengan cara menggabungkan tabel penjualan dan tabel pelanggan. Adapun query yang kita perlukan:
Hasil yang kita peroleh: +--------------+---------+----------+----------+---------+ | id_pelanggan | nama | jml_2016 | jml_2015 | TOTAL | +--------------+---------+----------+----------+---------+ | 1 | Alfa | 5225000 | 2450000 | 7675000 | | 2 | Beta | 1500000 | 4000000 | 5500000 | | 3 | Charlie | 6499000 | 2730000 | 9229000 | | 4 | Delta | 2900000 | 775000 | 3675000 | +--------------+---------+----------+----------+---------+ Fungsi Jika kita ingin menghitung jumlah baris, misal untuk menghitung jumlah transaksi per pelanggan, kita dapat menggunaan fungsi
UPDATE Mas awy dalam feedbacknya ingin membuat grand total dari total yang ada, saya rasa perlu untuk saya tambahkan pada artikel ini sehingga dapat lebih informatif. Terdapat beberapa cara untuk membuat grand total dari total yang ada, beberapa diantaranya dibahas pada artikel: Menghitung Total dan Subtotal Pada MySQL. Pada contoh kali ini kita akan menghitung grand total menggunakan query tersendiri kemudian digabungkan dengan query utama menggunakanÂÂ
Hasil yang kita dapatkan: +--------------+-------------+----------+----------+----------+ | id_pelanggan | nama | jml_2016 | jml_2015 | TOTAL | +--------------+-------------+----------+----------+----------+ | 1 | Alfa | 5225000 | 2450000 | 7675000 | | 2 | Beta | 1500000 | 4000000 | 5500000 | | 3 | Charlie | 6499000 | 2730000 | 9229000 | | 4 | Delta | 2900000 | 775000 | 3675000 | | | Grand Total | 16124000 | 9955000 | 26079000 | +--------------+-------------+----------+----------+----------+ Pada query diatas, query pertama dan kedua bentuknya mirip, hanya bedanya, pada query pertama, data kita kelompokkan (GROUP BY) berdasarkan kolom id_pelanggan sedangkan yang kedua, kita tidak melakukan pengelompokan data, MySQL otomatis akan menggabungkan semua data untuk masing masing kolom. Demikian pembahasan mengenai cara menggunakan fungsi SUM IF untuk menjumlahkan data dengan kriteria tertentu, semoga bermanfaat. Subscibe NowSuka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com |