SQL HAVING Kullanımı
HAVING yapısı temelde WHERE ile aynı görevi yapmaktadır.
GROUP BY ile
kullanılır. Where ifadesi ile belirtilen kriter Group By uygulanmadan önce
geçerli olurken, Having ifadesi ile belirtilen kriter ise group by uygulandıktan
sonra ortaya çıkan verileri filtrelemek için kullanılır. Ayrıca Where
ifadesinden sonra sum, avg gibi fonksiyonlar kullanılamazken, Having ile
kullanılabilir.
HAVING Kullanım Biçimi
SELECT alan_adlari,
FROM Tablo
GROUP BY alan_adi
HAVING alanadi operator deger |
Burada operatö ile belirtilen yere =, <, >, % gibi operatörler kullanılır.
Aşağıdaki gibi tablomuz olsun.
id |
Personel_adi |
Sehir |
Maas |
1 |
Salih
ESKİOĞLU |
İstanbul |
2100 |
2 |
Ayhan
ÇETİNKAYA |
Kocaeli |
2500 |
3 |
Serkan
ÖZGÜREL |
Erzurum |
1850 |
4 |
İlhan
ÖZLÜ |
İstanbul |
2750 |
Örnek 1:
SELECT Sehir, SUM(Maas) AS Toplam_Maas FROM Personel
WHERE Maas>2000
GROUP BY Sehir
Çıktısı:
Sehir |
Toplam_Maas |
İstanbul |
4850 |
Kocaeli |
2500 |
Bu örnekte WHERE kullanılarak maaşı 2000 TL den fazla olan personeller
seçilmiş ve bunlar gruplanarak illere maaşları toplamları bulunmuştur.
Burada göreleceği üzere WHERE ifadesi ile öncei kriteri belirttik ve
tablomuzdaki bazı kayıtlar devre dışı bıraktık. Sonrada kalan kayıtları
grupladık.
Örnek 2:
SELECT Sehir, SUM(Maas) AS Toplam_Maas FROM Personel
WHERE Maas>2000
GROUP BY Sehir
HAVING sehir like 'İ%'
Çıktısı:
Sehir |
Toplam_Maas |
İstanbul |
4850 |
Bu örnek aslında birinci örneğin devamı gibidir. WHERE ile bir şart koyup
kayıtları azalttıktan sonra Group By ile grupladık. Daha sonra bu gruplanmış
veriye ayrı bir şart koşuyoruz. Yani illere göre maaş toplamı 2000 den büyük
olan kayıtları bulup sonra bunları şehire göre grupladık ve ortaya
çıkan bu kayıtlardan şehir alanı i harfi ile başlayanları seçtik.