Veri gruplama işlemlerine bazı durumlarda, gruplanarak getirilecek veriler üzerinde bir filtreleme ihtiyacı olabilir. GROUP BY kullanıldığı durumlarda, SELECT ile birlikte WHERE ifadesi kullanılarak gruplanacak verilere alan bazında sınırlamalar getirilebilir. Gruplama fonksiyonları sonucunda elde edilen değere göre filtreleme işlemi yapılmak istenildiğinde ise HAVING ifadesi kullanılmalıdır. Örneğin; SQL cümlemize HAVING COUNT(AlanAdı)>10 gibi bir ifade ilave edilebilir. HAVING, sadece gruplama fonksiyonları içeren şart ifadelerini kullanabilir.

WHERE ve HAVING ifadelerinin GROUP BY ile birlikte kullanımları şu şekildedir:

SELECT GruplanacakAlanAdı, GruplamaFonksiyonu1(AlanAdı1)

From TabloAdı

Where Şart veya Şartlar

GROUP BY GruplanacakAlanAdı

HAVING GrupFonksiyonu Şartı veya Şartları

ORDER BY SıralanacakAlanAdı

Bu kullanımda ifadelerin sıralamaları yukarıdaki gibi olmalıdır. Yani ,

  • WHERE ifadesi her zaman GROUP BY’dan önce kullanılmalıdır.
  • HAVING ifadesi her zaman GROUP BY’dan sonra kullanılmalıdır.
  • ORDER BY her zaman GROUP BY’dan sonra kullanılmalıdır.

Son örnek olarak Production.Product tablosunda kırmızı veya mavi renkli ürünlerin Class bilgisine göre gruplanması, en az 5 kaydı olan Class kayıtlarının listelenmesi ve sonuçların Class adına göre sıralanması istendiğinde ekrandaki sorgu cümlesi kullanılabilir.

SELECT Class, COUNT(ProductId) FROM Production.Product

WHERE Color ='Red' OR Color='Blue'

GROUP BY Class

HAVING COUNT(ProductId) > 5

ORDER BY Class
Reklamlar