Fungsi Agregat — SQL

Fungsi agregat menghitung nilai dari sekumpulan baris dan mengembalikan satu hasil. 5 fungsi agregat utama: Fungsi Keterangan Contoh COUNT(*) Jumlah baris 10…

Fungsi agregat meringkas banyak baris jadi satu nilai: berapa banyak barisnya, berapa totalnya, berapa rata-ratanya, mana yang terkecil dan mana yang terbesar. Bayangin struk belanja yang panjang. Isinya banyak baris barang, tapi di bawahnya cuma ada satu baris: total. Kasir gak menulis ulang semua barang, dia meringkasnya. Itu kerja fungsi agregat.

🧪 Tebakan cepat: tabel products punya 5 baris. SELECT COUNT(*), MAX(price) FROM products; mengembalikan berapa baris? Tebak dulu, jawabannya ada di bagian "Banyak baris jadi satu baris".

Lima fungsi agregat

Tabel products di Lab dan latihan:

id name price category
1 Laptop 12000000 electronics
2 Mouse 150000 electronics
3 Notebook 25000 stationery
4 Monitor 3500000 electronics
5 Pen 5000 stationery
Fungsi Artinya Hasil di products
COUNT(*) jumlah baris 5
SUM(price) semua nilai dijumlah 15680000
AVG(price) rata-rata: jumlah dibagi banyaknya 3136000
MIN(price) nilai terkecil 5000
MAX(price) nilai terbesar 12000000

Contoh kecil lain: kalau kolom nilai berisi 80, 90 dan 70, SUM(nilai) = 240 dan AVG(nilai) = 240 / 3 = 80.

Banyak baris jadi satu baris

SELECT
  COUNT(*)   AS total_produk,
  AVG(price) AS rata_harga,
  MAX(price) AS termahal
FROM products;
total_produk rata_harga termahal
5 3136000 12000000

Satu baris, walau tabelnya 5 baris. Itu jawaban tebakannya: fungsi agregat meringkas semua baris, jadi hasilnya cuma 1 baris.

Agregat dengan WHERE

SELECT COUNT(*) AS total_produk, AVG(price) AS rata_harga
FROM products
WHERE category = 'electronics';
total_produk rata_harga
3 5216666.666666667

WHERE jalan duluan dan menyisakan 3 baris elektronik: Laptop, Mouse, Monitor. Fungsi agregat cuma meringkas baris yang lolos itu: (12.000.000 + 150.000 + 3.500.000) / 3.

NULL dilewati

NULL artinya "belum ada nilai". SUM, AVG, MIN, MAX dan COUNT(kolom) melewati NULL, sedangkan COUNT(*) tetap menghitung barisnya. Kalau ada produk keenam, Stapler, dengan price NULL:

COUNT(DISTINCT category) menghitung nilai yang berbeda saja: 2 (electronics dan stationery).

💡 Beda SQLite, MySQL, dan PostgreSQL

⚠️ Jebakan yang sering ketemu

TL;DR: Fungsi agregat meringkas banyak baris jadi satu nilai: COUNT(*) jumlah baris, SUM total, AVG rata-rata, MIN terkecil, MAX terbesar. Tanpa GROUP BY, hasilnya 1 baris. Beri nama kolom hasil dengan AS. WHERE menyaring baris dulu, baru diringkas. NULL dilewati semua fungsi kecuali COUNT(*). Agregat gak boleh ada di WHERE.

Yang akan kamu pelajari