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.
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.