HAVING Yapısı ve WHERE ile Farkı (SQL Dersleri - 13)

kusha · 31 Temmuz 2026 · 4 dk okuma

HAVING, GROUP BY ile birlikte kullanılan ve gruplama sonucunu filtrelemenizi sağlayan bir yapıdır. WHERE ile karıştırılmaya en müsait konulardan biridir — aradaki farkı net bir örnekle görelim.

Örnek: Ülkelere Göre Ortalama Nakliye Ücreti

SELECT [Sevk Ülkesi], AVG([Nakliye Ücreti]) AS OrtalamaNakliye
FROM Satışlar
GROUP BY [Sevk Ülkesi];

Bu sorgu her ülke için ortalama nakliye ücretini hesaplar.

WHERE: Gruplamadan Önce, Ham Veriyi Filtreler

SELECT [Sevk Ülkesi], AVG([Nakliye Ücreti]) AS OrtalamaNakliye
FROM Satışlar
WHERE PersonelID = 5
GROUP BY [Sevk Ülkesi];

Burada WHERE, gruplama yapılmadan önce yalnızca PersonelID = 5 olan satırları filtreye alır — ortalamalar bu alt kümeye göre hesaplanır.

HAVING: Gruplamadan Sonra, Sonucu Filtreler

SELECT [Sevk Ülkesi], AVG([Nakliye Ücreti]) AS OrtalamaNakliye
FROM Satışlar
GROUP BY [Sevk Ülkesi]
HAVING AVG([Nakliye Ücreti]) < 50;

Burada önce tüm veri gruplanıp her ülke için ortalama hesaplanır, HAVING ise bu hesaplanmış sonuç üzerinden yalnızca ortalaması 50'nin altında olan ülkeleri bırakır.

Özet: WHERE vs HAVING

Ne zaman çalışır Neyi filtreler
WHERE Gruplamadan önce Ham satırları
HAVING Gruplamadan sonra Gruplanmış/hesaplanmış sonucu

Kural: SUM, AVG, COUNT gibi bir toplu fonksiyonun sonucuna göre filtreleme yapmak istiyorsanız HAVING kullanmanız gerekir — WHERE içinde bu fonksiyonları doğrudan kullanamazsınız.

Sırada Ne Var?

Buraya kadar veri okuma sorgularını işledik. Sırada tablo oluşturma ve silme komutları olan CREATE TABLE ve DROP TABLE var.