Perbedaan utama antara WHERE dan HAVING di SQL:
- WHERE → Dipakai buat menyaring data sebelum agregasi (GROUP BY).
Contoh: Mau ambil pelanggan yang berasal dari “Jakarta”.<span class="hljs-keyword">SELECT</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">FROM</span> pelanggan <span class="hljs-keyword">WHERE</span> kota <span class="hljs-operator">=</span> <span class="hljs-string">'Jakarta'</span>;
- HAVING → Dipakai buat menyaring hasil setelah agregasi.
Contoh: Mau ambil kategori produk yang total penjualannya lebih dari 1.000.<span class="hljs-keyword">SELECT</span> kategori, <span class="hljs-built_in">SUM</span>(penjualan)
<span class="hljs-keyword">FROM</span> produk
<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> kategori
<span class="hljs-keyword">HAVING</span> <span class="hljs-built_in">SUM</span>(penjualan) <span class="hljs-operator">></span> <span class="hljs-number">1000</span>;
Intinya: WHERE menyaring baris data langsung, sedangkan HAVING menyaring hasil agregasi setelah GROUP BY.
- WHERE: Menyaring data sebelum pengelompokan (sebelum
GROUP BY
). - HAVING: Menyaring data setelah pengelompokan (setelah
GROUP BY
).
Contoh:
- WHERE:
SELECT * FROM customers WHERE age > 30;
- HAVING:
SELECT city, COUNT(*) FROM customers GROUP BY city HAVING COUNT(*) > 10;
Jadi, WHERE untuk data awal, HAVING untuk hasil agregat.