SQL GROUP BY ve HAVING Kullanımı

SQL’de GROUP BY ve HAVING ifadeleri, verileri gruplandırarak özet bilgiler elde etmek için kullanılır. GROUP BY belirli sütunlara göre gruplama yaparken, HAVING ise gruplandırılmış verilere filtre uygulamak için kullanılır.


1. GROUP BY Kullanımı

📌 GROUP BY komutu, belirli bir sütuna göre verileri gruplandırarak toplu işlemler yapmamızı sağlar. Genellikle SUM(), COUNT(), AVG(), MIN(), MAX() gibi grup fonksiyonları ile birlikte kullanılır.

Örnek Senaryo:

Bir mağazanın satışlarını içeren siparişler adlı bir tablo olduğunu düşünelim:

📌 siparişler tablosu

sipariş_idmüşteri_idürünmiktarfiyat
1101Laptop220000
2102Telefon38000
3101Tablet15000
4103Telefon28000
5102Laptop120000

Bu tablodan her müşterinin toplam kaç sipariş verdiğini bulmak için GROUP BY kullanabiliriz:

SELECT müşteri_id, COUNT(sipariş_id) AS toplam_sipariş  
FROM siparişler  
GROUP BY müşteri_id;

Sonuç:

müşteri_idtoplam_sipariş
1012
1022
1031

📌 GROUP BY sayesinde her müşterinin kaç sipariş verdiğini gruplandırarak saydık.


2. GROUP BY ile SUM Kullanımı

📌 Her müşterinin yaptığı toplam harcamayı bulmak için SUM() fonksiyonunu kullanabiliriz.

SELECT müşteri_id, SUM(fiyat * miktar) AS toplam_harcama  
FROM siparişler  
GROUP BY müşteri_id;

Sonuç:

müşteri_idtoplam_harcama
10145000
10244000
10316000

📌 SUM() ile her müşterinin toplam harcamasını hesapladık.


3. HAVING Kullanımı

📌 HAVING, GROUP BY ile kullanılan verilere filtre uygulamak için kullanılır. WHERE koşulu gruplandırmadan önce kullanılırken, HAVING gruplandırmadan sonra kullanılır.

Örnek:

Her müşterinin toplam harcamasını hesapladık, ancak sadece 40.000 TL’den fazla harcayan müşterileri görmek istiyoruz.

SELECT müşteri_id, SUM(fiyat * miktar) AS toplam_harcama  
FROM siparişler  
GROUP BY müşteri_id  
HAVING toplam_harcama > 40000;

Sonuç:

müşteri_idtoplam_harcama
10145000
10244000

📌 HAVING kullanarak yalnızca toplam harcaması 40.000 TL üzerinde olan müşterileri listeledik.


4. GROUP BY ve HAVING ile COUNT Kullanımı

📌 Bir müşterinin kaç farklı sipariş verdiğini ve sadece 2 veya daha fazla sipariş verenleri bulalım.

SELECT müşteri_id, COUNT(sipariş_id) AS toplam_sipariş  
FROM siparişler  
GROUP BY müşteri_id  
HAVING toplam_sipariş >= 2;

Sonuç:

müşteri_idtoplam_sipariş
1012
1022

📌 HAVING kullanarak yalnızca 2 veya daha fazla sipariş veren müşterileri listeledik.


GROUP BY ve HAVING Kullanımı Özet

KomutNe İşe Yarar?
GROUP BYVerileri belirli bir sütuna göre gruplandırır.
HAVINGGruplandırılmış verileri filtrelemek için kullanılır.

✅ En önemli fark:

  • WHERE → Gruplandırmadan önce filtreleme yapar.
  • HAVING → Gruplandırmadan sonra filtreleme yapar.

guest
0 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
0
YORUM YAPx