Learn
← Previous Next →

Hari 13: HAVING — Filter Setelah GROUP BY

50 min Last updated 25 Mar 2026

WHERE vs HAVING

WHEREHAVING
Filter sebelum agregasiFilter setelah agregasi
Tidak bisa pakai fungsi agregatBisa pakai COUNT, SUM, AVG, dll
Pada baris individualPada hasil GROUP BY
-- Kota dengan lebih dari 2 pelanggan
SELECT kota, COUNT(*) AS jumlah
FROM pelanggan
GROUP BY kota
HAVING COUNT(*) > 2;

-- Kategori produk dengan rata-rata harga > 1juta
SELECT kategori_id,
  COUNT(*) AS jumlah_produk,
  ROUND(AVG(harga), 0) AS rata_harga
FROM produk
GROUP BY kategori_id
HAVING AVG(harga) > 1000000;

-- Kombinasi WHERE + GROUP BY + HAVING
SELECT kota, COUNT(*) AS jumlah
FROM pelanggan
WHERE status = 'aktif'         -- filter baris dulu
GROUP BY kota
HAVING COUNT(*) >= 2            -- filter kelompok
ORDER BY jumlah DESC;

💡 Notice: HAVING diletakkan setelah GROUP BY, sebelum ORDER BY.

Assignment

Tampilkan metode_bayar yang total pendapatannya di atas 10.000.000. Tampilkan metode_bayar, jumlah_transaksi, dan total_pendapatan.

Expected output:

3 row(s) returned
SQL query.sql
Solution
Output
⏳ Loading DB...