Fungsi Agregat: COUNT, SUM, AVG, MIN, MAX

Merangkum banyak baris menjadi satu angka: menghitung jumlah, total, rata-rata, nilai terkecil dan terbesar, serta perbedaan COUNT(*), COUNT(kolom), dan COUNT(DISTINCT).

Part 20 dari 38 ± 35 menit Gratis

Dari banyak baris menjadi satu angka

Pemilik toko jarang bertanya "tampilkan 10.000 transaksi". Ia bertanya: "Berapa total penjualan bulan ini? Berapa rata-rata belanja pelanggan? Produk termurah berapa?" Jawabannya adalah satu angka yang merangkum banyak baris. Itulah tugas fungsi agregat.

FungsiMenghasilkanContoh
COUNT(*)Jumlah barisSELECT COUNT(*) FROM produk; → 13
SUM(kolom)TotalSELECT SUM(stok) FROM produk;
AVG(kolom)Rata-rataSELECT AVG(harga) FROM produk;
MIN(kolom)Nilai terkecilSELECT MIN(harga) FROM produk;
MAX(kolom)Nilai terbesarSELECT MAX(tgl_daftar) FROM pelanggan;

Beberapa agregat bisa dipakai bersamaan dalam satu SELECT:

SELECT COUNT(*)  AS jumlah_produk,
       SUM(stok) AS total_stok,
       ROUND(AVG(harga)) AS harga_rata,
       MIN(harga) AS termurah,
       MAX(harga) AS termahal
FROM produk
WHERE kategori_id = 1;
+---------------+------------+------------+----------+----------+
| jumlah_produk | total_stok | harga_rata | termurah | termahal |
+---------------+------------+------------+----------+----------+
|             4 |        195 |      15750 |     8000 |    22000 |
+---------------+------------+------------+----------+----------+

Perhatikan urutan kerja: WHERE menyaring baris dulu, baru agregat menghitung dari baris yang lolos. Jadi angka di atas hanya untuk Minuman.

Tiga jenis COUNT yang sering membingungkan

BentukMenghitungHasil di tabel pelanggan
COUNT(*)Semua baris10
COUNT(email)Baris yang email-nya tidak NULL8
COUNT(DISTINCT kota)Jumlah nilai unik (tanpa NULL)6

Agregat mengabaikan NULL! AVG, SUM, MIN, MAX, dan COUNT(kolom) melewati nilai NULL. Rata-rata dari (10, 20, NULL) adalah 15 (dua nilai), bukan 10 (tiga nilai). Waspadai ini saat menafsirkan angka. Hanya COUNT(*) yang menghitung semua baris tanpa pandang NULL.

Agregat tanpa baris sama sekali

Jika WHERE tidak meloloskan baris apa pun: COUNT menghasilkan 0, tetapi SUM, AVG, MIN, MAX menghasilkan NULL. Bungkus dengan IFNULL(SUM(...), 0) bila butuh nol.

Aturan emas: agregat tidak boleh bercampur sembarangan

SELECT nama, COUNT(*) FROM produk; tidak masuk akal: COUNT menghasilkan satu angka, sedangkan nama ada 13. Untuk mencampur kolom biasa dengan agregat, kamu butuh GROUP BY, topik bab berikutnya.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X