SQL · 7/8
Gruplama ve özet analizler: GROUP BY & COUNT
Tablodaki satırları ortak özelliklere göre gruplayarak COUNT, SUM, AVG gibi toplu hesaplamalar yapmak.
Önerilen çalışma: 25–45 dakika; örnekleri kendin uygula. Süre kişiye göre değişir.
Bu sayfada · 9 başlık
Başlamadan önce
Önceki dersteki örneği çalıştırmış olman ve dosya/çıktı ayrımını biliyor olman yararlı.
Öğrenme sırası: konuyu oku → çıktıyı tahmin et → örneği değiştir → alıştırmayı çöz → cevabını gerekçelendir.

Videoyla adım adım izle
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Gruplama ve özet analizler: GROUP BY & COUNT
Tablodaki satırları ortak özelliklere göre gruplayarak COUNT, SUM, AVG gibi toplu hesaplamalar yapmak.
Kavramı kur
Tek tek satırları okumak yerine "Hangi bölümde kaç çalışan var?", "Toplam ciro ne kadar?" veya "Kategori bazında ortalama fiyat nedir?" gibi sorular için toplama (aggregate) fonksiyonları kullanılır.
Neden böyle çalışıyor?
GROUP BY, belirtilen sütundaki aynı değerlere sahip satırları tek bir grupta toplar. COUNT(*) gruptaki satır sayısını, SUM(sutun) toplamını, AVG(sutun) ortalamasını, MAX/MIN ise en büyük/en küçük değeri verir.
Çalışma sırası
AS sözcüğü ile hesaplanan yeni değere takma ad (alias) vererek sonuç tablosunda sütun başlığını anlaşılır kılabilirsin: COUNT(*) AS kisi_sayisi.
İkinci örnek · 1
FROM calisanlar tablosu taranır. Kodun tamamı yazılı derste bulunur.
Kod
SELECT bolum, COUNT(*) AS kisi_sayisi
FROM calisanlar
GROUP BY bolum;Beklenen sonucu oku
Sonuçta her bölüm ve karşısındaki kişi sayısı listelenir.
Beklenen çıktı: bolum | kisi_sayisi Yazılım | 2 Tasarım | 1 Pazarlama | 1
Bir değeri sen değiştir
Her bölümün ortalama maaşını (AVG(maas)) hesaplayan sorgu yaz. Tüm şirketteki toplam maaş giderini hesaplamak için GROUP BY olmadan SUM(maas) çalıştır.
Hata nereden gelir?
SELECT listesinde toplama fonksiyonu olmayan sütunları GROUP BY içine eklemeyi unutmak hataya yol açar.
Kendi çözümünü kur
Her bölümdeki en yüksek maaşı MAX(maas) ile bul. Ortalama için AVG(maas), takma ad için AS ortalama_maas yaz.
Çözüm varyasyonu · 1
Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.
Kod
SELECT bolum, AVG(maas) AS ortalama_maas
FROM calisanlar
GROUP BY bolum;Kendini kontrol et
GROUP BY bolum sorgusunda SELECT ad, bolum, COUNT(*) yazılırsa ne sorun oluşabilir? Yanıt: ad sütunu gruplanmadığı ve toplama fonksiyonuna alınmadığı için hangi çalışanın adının basılacağı belirsizdir; SQL motoru hata verir.
Beklenen çıktı: bolum | ortalama_maas Yazılım | 61500 Tasarım | 52000 Pazarlama | 48000
Konu anlatımı
Tek tek satırları okumak yerine "Hangi bölümde kaç çalışan var?", "Toplam ciro ne kadar?" veya "Kategori bazında ortalama fiyat nedir?" gibi sorular için toplama (aggregate) fonksiyonları kullanılır.
GROUP BY, belirtilen sütundaki aynı değerlere sahip satırları tek bir grupta toplar. COUNT(*) gruptaki satır sayısını, SUM(sutun) toplamını, AVG(sutun) ortalamasını, MAX/MIN ise en büyük/en küçük değeri verir.
AS sözcüğü ile hesaplanan yeni değere takma ad (alias) vererek sonuç tablosunda sütun başlığını anlaşılır kılabilirsin: COUNT(*) AS kisi_sayisi.
İlk örneği oku ve dene
Gruplama ve özet analizler: GROUP BY & COUNT
Birden çok satırı belirli bir sütuna göre gruplamak için GROUP BY kullanılır. COUNT satır sayısını, SUM toplamı, AVG ortalamayı verir.
SELECT bolum, COUNT(*) AS kisi_sayisi
FROM calisanlar
GROUP BY bolum;
▶ Sonuç
bolum | kisi_sayisi Yazılım | 2 Tasarım | 1
Adım adım neden böyle çalışıyor?
- FROM calisanlar tablosu taranır.
- GROUP BY bolum satırları bölüm değerlerine göre kümelere ayırır.
- COUNT(*) her kümenin kaç satırdan oluştuğunu sayar.
- Sonuçta her bölüm ve karşısındaki kişi sayısı listelenir.
İkinci çözümlü örnek
Tablodaki satırları ortak özelliklere göre gruplayarak COUNT, SUM, AVG gibi toplu hesaplamalar yapmak.
SELECT bolum, COUNT(*) AS kisi_sayisi
FROM calisanlar
GROUP BY bolum;
▶ Sonuç
bolum | kisi_sayisi Yazılım | 2 Tasarım | 1 Pazarlama | 1
Kolaydan zora sen dene
- Her bölümün ortalama maaşını (AVG(maas)) hesaplayan sorgu yaz.
- Tüm şirketteki toplam maaş giderini hesaplamak için GROUP BY olmadan SUM(maas) çalıştır.
- Her bölümdeki en yüksek maaşı MAX(maas) ile bul.
İpucunu aç
Ortalama için AVG(maas), takma ad için AS ortalama_maas yaz.
Üç görevin açıklamalı çözümünü oku
- SELECT bolum, AVG(maas) AS ort_maas FROM calisanlar GROUP BY bolum; ortalama maaşı verir.
- GROUP BY olmadan SUM(maas) tüm tablodaki genel toplamı döndürür.
- MAX(maas) her bölümdeki tavan maaşı hesaplar.
Bir çözüm varyasyonu gör
Çözüm varyasyonu
Önce kendi görevlerini dene. Bu varyasyonda girdi ve sonuçları karşılaştır.
SELECT bolum, AVG(maas) AS ortalama_maas
FROM calisanlar
GROUP BY bolum;
▶ Sonuç
bolum | ortalama_maas Yazılım | 61500 Tasarım | 52000 Pazarlama | 48000
Yaygın hata ve çözümü
- SELECT listesinde toplama fonksiyonu olmayan sütunları GROUP BY içine eklemeyi unutmak hataya yol açar.
- COUNT(sutun) NULL değerleri saymaz, COUNT(*) tüm satırları sayar.
Kendini değerlendir
Ezberlemeden açıklayabiliyor musun?
GROUP BY bolum sorgusunda SELECT ad, bolum, COUNT(*) yazılırsa ne sorun oluşabilir?
Açıklamalı yanıt
ad sütunu gruplanmadığı ve toplama fonksiyonuna alınmadığı için hangi çalışanın adının basılacağı belirsizdir; SQL motoru hata verir.
Kendi çözümünde bir girdiyi değiştir. Çalıştırmadan önce beklenen sonucu yaz; gerçek sonuçla karşılaştır ve fark varsa hangi satırdan kaynaklandığını açıkla.
Kaynak ve çalışma ortamı
Örnekler küçük öğretim senaryolarıdır. Java/C#/PHP/Swift çalışma ortamını kendi cihazında ayrıca doğrula; yazılı sonuçlar beklenen davranışı açıklar.
Resmî dil belgeleriBu içerik işine yaradı mı?
Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.