Sobes.tech
Junior

SQL'de WHERE ve HAVING yapıları arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

WHERE, satırları gruplamadan (GROUP BY) önce filtreler, hangi satırların toplama fonksiyonlarına katılacağını etkiler. HAVING, gruplandıktan sonra filtre uygular ve toplama fonksiyonlarının sonuçlarına dayanır.

Özellik WHERE HAVING
Uygulama Bireysel satırlara Satır gruplarına
İşleme zamanı GROUP BY'den önce GROUP BY'den sonra
Kullanım Tablo alanlarıyla, ancak toplama fonksiyonları olmadan Toplama fonksiyonları veya GROUP BY alanlarıyla

WHERE kullanımı örneği:

SELECT ürün_adı, fiyat
FROM ürünler
WHERE kategori_id = 1; -- Satırları **gruplamadan** önce filtreler (eğer olsaydı)

HAVING kullanımı örneği:

SELECT kategori_id, COUNT(*) AS toplam_ürün
FROM ürünler
GROUP BY kategori_id
HAVING COUNT(*) > 5; -- Toplam ürün sayısına göre grupları **sonra** filtreler

Birlikte kullanım örneği:

SELECT kategori_id, AVG(fiyat) AS ortalama_fiyat
FROM ürünler
WHERE stok > 0 -- Sadece stokta olan ürünleri **gruplamadan** önce filtreler
GROUP BY kategori_id
HAVING AVG(fiyat) < 100; -- Ortalama fiyatı 100'ün altında olan grupları **sonra** filtreler