Wednesday, September 28, 2016

Fungsi Agregat dalam MySQL

Fungsi agregat  dalam MySQL adalah fungsi yang menerima koleksi nilai dan mengembalikan nilai tunggal sebagai hasilnya, seperti: jumlah data, nilai minimun, nilai maximum dan nilai rata-rata .

Jenis Fungsi Agregat

Standar ISO mendefinisikan lima jenis fungsi agregat, yaitu:
SUM digunakan untuk menghitung total nilai dari kolom tertentu
COUNT digunakan untuk menghitung jumlah record.
AVG digunakan untuk menampikan nilai rata-rata dari suatu kolom
MAX digunakan untuk menampikan nilai tertinggi dari suatu kolom
MIN digunakan untuk menampikan nilai terendah dari suatu kolom

Latihan Fungsi Agregat

Sebelum latihan, kita buat dulu tabel buku dengan struktur tabel sebagai berikut.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
mysql> CREATE TABLE buku (
    ->   kode_buku CHAR(5) PRIMARY KEY,
    ->   judul_buku VARCHAR(50),
    ->   pengarang VARCHAR(30),
    ->   penerbit VARCHAR(30),
    ->   tahun YEAR,
    ->   kategori VARCHAR(30),
    ->   harga INT(7),
    ->   tgl_inventaris DATE
    -> );
Query OK, 0 rows affected (0.15 sec)
 
mysql> DESC buku;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| kode_buku      | char(5)     | NO   | PRI | NULL    |       |
| judul_buku     | varchar(50) | YES  |     | NULL    |       |
| pengarang      | varchar(30) | YES  |     | NULL    |       |
| penerbit       | varchar(30) | YES  |     | NULL    |       |
| tahun          | year(4)     | YES  |     | NULL    |       |
| kategori       | varchar(30) | YES  |     | NULL    |       |
| harga          | int(7)      | YES  |     | NULL    |       |
| tgl_inventaris | date        | YES  |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
8 rows in set (0.01 sec)
dengan data sebagai berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql> INSERT INTO buku VALUES
 -> ('B0001', 'Harry Potter', 'JK Rowling', 'British Press', 2013, 'Fiksi', 50000, '201-03-01'),
 -> ('B0002', 'Sistem Basis Data', 'Abdul Kadir', 'Andi Offset', 2013, 'Buku Teks', 40000, '2015-03-01'),
 -> ('B0003', 'Sistem Basis Data', 'Fathansyah', 'ITB Press', 2013, 'Buku Teks', 30000, '2015-03-01'),
 -> ('B0004', 'Prophet Muhammad', 'Amir Abdullah', 'Madina Press', 2014, 'Biografi', 45000, '2015-03-01'),
 -> ('B0005', 'Ketika Cinta Bertasbih', 'Habiburahaman ES', 'Madina Press', 2014, 'Fiksi', 75000, '2015-02-01'),
 -> ('B0006', 'Pemrograman Basis Data', 'Abdul Kadir', 'Andi Offset', 2015, 'Buku Teks', 67000, '2015-02-01');
Query OK, 6 rows affected (0.05 sec)
Records: 6 Duplicates: 0 Warnings: 0
 
mysql> SELECT * FROM buku;
+-----------+------------------------+------------------+---------------+-------+-----------+------+----------------+
| kode_buku | judul_buku             | pengarang        | penerbit      | tahun | kategori  | harga| tgl_inventaris |
+-----------+------------------------+------------------+---------------+-------+-----------+------+----------------+
| B0001     | Harry Potter           | JK Rowling       | British Press |  2013 | Fiksi     | 50000| 2015-03-01     |
| B0002     | Sistem Basis Data      | Abdul Kadir      | Andi Offset   |  2013 | Buku Teks | 40000| 2015-03-01     |
| B0003     | Sistem Basis Data      | Fathansyah       | ITB Press     |  2013 | Buku Teks | 30000| 2015-03-01     |
| B0004     | Prophet Muhammad       | Amir Abdullah    | Madina Press  |  2014 | Biografi  | 45000| 2015-03-01     |
| B0005     | Ketika Cinta Bertasbih | Habiburahaman ES | Madina Press  |  2014 | Fiksi     | 75000| 2015-02-01     |
| B0006     | Pemrograman Basis Data | Abdul Kadir      | Andi Offset   |  2015 | Buku Teks | 67000| 2015-02-01     |
+-----------+------------------------+------------------+---------------+-------+-----------+------+----------------+
6 rows in set (0.00 sec)
Fungsi Agregat - Data Tabel Buku
Fungsi Agregat – Data Tabel Buku

Fungsi Agregat: COUNT

Fungsi COUNT Digunakan untuk menghitung jumlah record.
Contoh:
  • Hitung jumlah record tabel buku
1
2
3
4
5
6
7
8
mysql> SELECT COUNT(*)
    -> FROM buku;
+----------+
| COUNT(*) |
+----------+
|        6 |
+----------+
1 row in set (0.00 sec)
  • Hitung jumlah record tabel buku dengan nama kolom jum_rec
1
2
3
4
5
6
7
8
mysql> SELECT COUNT(*) AS jum_rec
    -> FROM buku;
+---------+
| jum_rec |
+---------+
|       6 |
+---------+
1 row in set (0.03 sec)
  • Hitung jumlah record untuk tahun 2013
1
2
3
4
5
6
7
8
9
mysql> SELECT COUNT(*) AS jum_rec
    -> FROM buku
    -> WHERE tahun = 2013;
+---------+
| jum_rec |
+---------+
|       3 |
+---------+
1 row in set (0.03 sec)

Fungsi Agregat SUM

Fungsi SUM digunakan untuk menghitung total nilai dari kolom tertentu
Contoh:
  • Hitung total harga
1
2
3
4
5
6
7
8
mysql> SELECT SUM(harga) AS total_harga
    -> FROM buku;
+-------------+
| total_harga |
+-------------+
|      307000 |
+-------------+
1 row in set (0.03 sec)
  • Hitung total harga untuk tahun 2013
1
2
3
4
5
6
7
8
9
mysql> SELECT SUM(harga) AS total_harga
    -> FROM buku
    -> WHERE tahun=2013;
+-------------+
| total_harga |
+-------------+
|      120000 |
+-------------+
1 row in set (0.00 sec)

Fungsi Agregat MAX

Fungsi Max Digunakan untuk menampikan nilai tertinggi dari suatu kolom
Contoh:
  • Tampilkan harga tertinggi
1
2
3
4
5
6
7
8
mysql> SELECT MAX(harga) AS harga_tertingi
    -> FROM buku;
+----------------+
| harga_tertingi |
+----------------+
|          75000 |
+----------------+
1 row in set (0.00 sec)
  • Tampilkan harga tertinggi untuk tahun 2013
1
2
3
4
5
6
7
8
9
mysql> SELECT MAX(harga) AS harga_tertinggi
    -> FROM buku
    -> WHERE tahun=2013;
+-----------------+
| harga_tertinggi |
+-----------------+
|           50000 |
+-----------------+
1 row in set (0.00 sec)

Fungsi Agregat: MIN

Fungsi MIN Digunakan untuk menampikan nilai terendah dari suatu kolom
Contoh:
  • Tampilkan harga terendah
1
2
3
4
5
6
7
8
mysql> SELECT MIN(harga) AS harga_terendah
    -> FROM buku;
+----------------+
| harga_terendah |
+----------------+
|          30000 |
+----------------+
1 row in set (0.00 sec)
  • Tampilkan harga terendah untuk tahun 2013
1
2
3
4
5
6
7
8
9
mysql> SELECT MIN(harga) AS harga_terendah
    -> FROM buku
    -> WHERE tahun=2013;
+----------------+
| harga_terendah |
+----------------+
|          30000 |
+----------------+
1 row in set (0.00 sec)

Fungsi Agregat AVG

Fungsi AVG Digunakan untuk menampikan nilai rata-rata dari suatu kolom
Contoh:
  • Tampilkan harga rata-rata
1
2
3
4
5
6
7
8
mysql> SELECT AVG(harga) AS harga_rerata
    -> FROM buku;
+--------------+
| harga_rerata |
+--------------+
|   51166.6667 |
+--------------+
1 row in set (0.00 sec)
  • Tampilkan harga rata-rata untuk tahun 2013
1
2
3
4
5
6
7
8
9
mysql> SELECT AVG(harga) AS harga_rerata
    -> FROM buku
    -> WHERE tahun=2013;
+--------------+
| harga_rerata |
+--------------+
|   40000.0000 |
+--------------+
1 row in set (0.00 sec)

Sumber