Aggregate Fonksiyonları: COUNT, SUM, AVG Kullanırken GROUP BY Unutulması
Aggregate fonksiyonları (COUNT, SUM, AVG) verileri toplar ve özetler. Ancak birden fazla satırdan veri toplarken GROUP BY kullanmadığında hata alırsın veya yanlış sonuç elde edersin.
Örneğin satış tablosunda her ürün kategorisinin toplam satışını görmek istiyorsun. Ama GROUP BY'ı unutuyorsun:
1SELECT kategori, SUM(satış) 2FROM satislar;Hata: "GROUP BY hataası" alırsın veya veritabanı kategorisiz tüm satışları toplar.
Aggregate fonksiyonunun yanına GROUP BY ekle:
1SELECT kategori, SUM(satış) 2FROM satislar3GROUP BY kategori;Çıktı:
Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1kategori | SUM(satış)2------------|----------3Elektronik | 50004Giyim | 32005Gıda | 1800- GROUP BY olmadan: Tüm satırlar tek bir gruba girer, sonuç tek satır olur.
- GROUP BY ile: Satırlar kategoriye göre gruplandırılır, her grup ayrı hesaplanır.
Her kategoride kaç ürün var?
1SELECT kategori, COUNT(*) as urun_sayisi2FROM urunler3GROUP BY kategori;Çıktı:
1kategori | urun_sayisi2------------|----------3Elektronik | 154Giyim | 85Gıda | 12Her kategorinin ortalama fiyatı:
1SELECT kategori, AVG(fiyat) as ortalama_fiyat2FROM urunler3GROUP BY kategori;Çıktı:
1kategori | ortalama_fiyat2------------|----------3Elektronik | 2500.504Giyim | 150.255Gıda | 45.75Eğer kategoriye ve markaya göre gruplandırmak istersen:
1SELECT kategori, marka, SUM(satış)2FROM satislar3GROUP BY kategori, marka;- Aggregate fonksiyon (COUNT, SUM, AVG) kullandığında, SELECT'teki diğer sütunlar mutlaka GROUP BY'da olmalı.
- GROUP BY olmadan tek bir sonuç alırsın.
- GROUP BY ile her grup için ayrı hesaplama yapılır.
5 yorum
ya bende de böyle oluyor özellikle birden fazla tablo join ettikten sonra GROUP BYı
en kötüsü de bu hatayı bulması bayağı zaman alıyor bazen özellikle karmaşık sorgularda fark etmiyorsun hemen
Veri tabanında çalışırken bu çok sık yapılan bir hata gerçekten GROUP BYı unutunca ya
joinden sonra GROUP BYı unuttukça sanki sorgu çalışıyor ama sonuçlar bambaşka çıkıyor
İzmirde yazılım işi yapan biri olarak söyleyeyim bu hata benim de başıma geldi Özellikle