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