MSSQL’de WHERE ifadesinden sonra SUM, AVG, COUNT, MIN, MAX fonksiyonları kullanılamaz. Gruplanan veriler üzerinde fonksiyonlar ile yazılacak koşul ifadelerinin gerçekleştirilebilmesi için HAVING ifadesi kullanılır. Bu ifadeleri içeren koşul ifadeleri mutlaka HAVING ifadesinden sonra yazılır. GROUP BY kullanılmadan HAVING ifadesi kullanılamaz.
HAVING ifadesini daha iyi örnekleyebilmek için normalizasyon kurallarına uymayan aşağıdaki personel tablosu ile çalışılmıştır. Personel tablosunun oluşturma ve veri girişi kodlarına Personel Tablosu Örneği başlıklı yazıdan ulaşabilirsiniz.
GROUP BY – HAVING Örnekleri
- En yüksek ücretin 1200’den yüksek olduğu birimlerdeki ortalama ücretleri listeleyin.1234SELECT birim, AVG(maas) AS 'Maaş ortalaması'FROM personelGROUP BY birimHAVING MAX(maas)>1200;
- Maaş ortalamasının 1200’den yüksek olduğu birimlerde çalışan erkek personellerin, birimlere göre ortalama ücretlerini ve çalışan sayılarını listeleyin.12345SELECT birim, AVG(maas) AS 'Maaş ortalaması', COUNT(*) AS 'Çalışan sayısı'FROM personelWHERE cinsiyet='E'GROUP BY birimHAVING AVG(maas)>1200;