SQL Group By ve Having Arasındaki Fark


Group By (yani gruplandır) yardımcı sözcüğü kayıtları bir alana göre gruplandırmak için kullanılır.

Genel yazılımı aşağıdaki şekildedir
1
2
3
Select DISTINCT|ALL sütun(lar) from Tablo(lar)
where sart(lar)
group by sütun(lar)
Örnek

1
2
3
4
select ShipCountry, COUNT(*) as toplam from orders
where ShipCountry LIKE 'a%'
group by ShipCountry
order by toplam desc


Having gruplandırma yaparken sorguda bir koşulun da verilmesi gerekiyorsa devreye girer. Kullanılan “HAVING” yardımcı kelimesi “GROUP BY” ile gruplanan kayıtlar üzerinde kısıtlama yapar.

Genel kullanımı aşağıdaki şekildedir

1
2
3
4
Select DISTINCT|ALL sütun(lar) from Tablo(lar)
where sart(lar)
group by sütun(lar)
having grup_kisitlamasi


HAVING Kullanma Kuralları
Select komutunda GROUP BY yoksa HAVING geçersiz olur.
HAVING sözcüğünü izleyen ifade içinde SUM, MIN, MAX, AVG, COUNT fonksiyonlarından en az biri mutlaka olmalıdır.
HAVING sözcüğü sadece ve sadece gruplanmış verilerin işlemleri için geçerlidir.
WHERE ile birlikte bir Select komutu içinde kullanılabilir.

WHERE ve HAVING arasındaki fark;
WHERE bir tablonun tek satırları üzerinde işlem yapan koşullar içinde geçerlidir. HAVING gruplanmış verilerin işlemleri için geçerlidir.

Örnek:

1
2
3
4
5
select ShipCountry, COUNT(*) as toplam from orders
where ShipCountry LIKE 'B%'
group by ShipCountry
having COUNT(*)>50
order by toplam desc

Yorumlar