Study
SQL

GROUP BY & HAVING

Penjelasan

GROUP BY mengelompokkan baris berdasarkan nilai kolom tertentu, lalu fungsi agregat dihitung per kelompok (bukan untuk seluruh tabel). HAVING mirip WHERE, tapi menyaring hasil SETELAH pengelompokan — dipakai kalau syaringnya berdasarkan hasil agregat (misal "kategori dengan lebih dari 10 produk"), yang tidak bisa dilakukan WHERE karena WHERE bekerja sebelum pengelompokan.

Contoh Konsep

-- Jumlah produk per kategori
SELECT category, COUNT(*) AS jumlah
FROM products
GROUP BY category;

-- Rata-rata harga per kategori
SELECT category, AVG(price) AS rata_rata_harga
FROM products
GROUP BY category;

-- Hanya tampilkan kategori dengan lebih dari 5 produk
SELECT category, COUNT(*) AS jumlah
FROM products
GROUP BY category
HAVING COUNT(*) > 5;

Praktikum

Dari tabel 'articles' (kolom: category, view_count), tulis query untuk menampilkan total view_count per category, tapi hanya kategori dengan total view_count lebih dari 5000.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Urutan logis klausa SQL: WHERE menyaring baris SEBELUM dikelompokkan, HAVING menyaring kelompok SESUDAH dihitung. WHERE tidak bisa memakai hasil agregat (`WHERE COUNT(*) > 5` akan error), HAVING bisa.