Pada 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:
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:
- id_transaksi merupakan nilai unik dari tabel penjualan. Field ini merupakan primary key untuk tabel penjualan.
- id_pelanggan merupakan merupakan nomor id dari pelanggan. Field ini merupakan foreign key dari field
id_pelanggan
yang ada pada tabelpelanggan
- id_produk merupakan nomor id untuk produk. Field ini merupakan foreign key dari field
id_produk
yang ada pada tabelproduk
. - tgl_byr merupakan tanggal pembayaran dengan format yyyy-mm-dd.
- jml_byr merupakan jumlah pembayaran.
+--------------+--------------+-----------+------------+---------+ | 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 IF
Selanjutnya, mari kita gunakan fungsi SUM dan IF untuk melakukan penjumlahan semua penjualan berdasarkan tahun, query yang kita gunakan adalah:SELECT SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016,
SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015
FROM penjualan
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
YEAR
untuk mendapatkan tahun dari data tanggal ada pada kolom tgl_byr
, selanjutnya jika:- Hasil fungsi
YEAR
adalah 2016, maka, ambil nilai pada kolomjml_byr
untuk disertakan dalam proses penjumlahan, jika tidak, gunakan nilai nol (0
). - Proses diatas berlaku juga untuk tahun 2015.
Penting diperhatikan bahwa antara
Selanjutnya, jika kita ingin mengetahui jumlah pembelian per
pelanggan per tahun, maka kita dapat mengelompokkan data berdasarkan
kolom SUM
dengan tanda kurung buka tidak boleh ada spasi seperti: SUM (
jika tidak, maka akan muncul pesan error: SQL
Error (1630): FUNCTION tutorial_sum_if.SUM does not exist. Check the
'Function Name Parsing and Resolution' section in the Reference Manual
id_pelanggan
, query yang kita gunakan:SELECT id_pelanggan,
SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016,
SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015,
SUM(jml_byr) AS TOTAL
FROM penjualan
GROUP BY id_pelanggan
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:
SELECT id_pelanggan,
nama,
SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016,
SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015,
SUM(jml_byr) AS TOTAL
FROM penjualan
LEFT JOIN pelanggan USING(id_pelanggan)
GROUP BY id_pelanggan
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 | +--------------+---------+----------+----------+---------+
Sumber : http://jagowebdev.com/menggunakan-sum-if-untuk-menjumlahkan-nilai-fieldkolom-suatu-tabel-pada-mysql/
Tidak ada komentar:
Posting Komentar