Group by, kayıtları bir alana göre gruplandırmak için kullanılır.
Group by ile gruplandırma yapıldıktan sonra kısıtlama yapılması gerekiyorsa
where kullanılamaz onun yerine kısıtlama için having kullanılır.
Having kullanılabilmesi için ayrıca Sum, Count, Min, Max, Avg fonksiyonlarında
en az biri kullanılmalıdır.
-- Uyeleri ve uyelerin teslim aldığı kitap sayılarını veren kodu yazalım select uyeAdSoyad,COUNT(kitapAd) 'Alınan Kitap Sayısı' from uye,kitap,teslimat where uyeNo=uyeId and kitapNo=kitapId -- Bu kodu çalıştırdığımızda group by hatası alırız. Sebebi Sum,Count,Avg vs. gibi -- fonksiyonları da kullanmak istediğimizde gruplandırma yapmamızı istemesidir. select uyeAdSoyad,COUNT(kitapAd) 'Alınan Kitap Sayısı' from uye,kitap,teslimat where uyeNo=uyeId and kitapNo=kitapId group by uyeAdSoyad -- Sonuna uyeAdSoyad 'a göre gruplandırmak istediğimizi belirtirsek hatadan kurtulmuş oluruz. -- Şimdide yazarları ve kitaplarının toplam sayfa sayılarını listeleyelim ama sadece 3 kitabı -- olan yazarlarda yapalım bu işlemi select yazarAdSoyad,SUM(kitapSayfa) as 'Toplam Sayfa' from yazar,kitap where yazarNo=yazarId group by yazarAdSoyad having COUNT(kitapId)=3 /* yazar bilgisi toplam kitap sayfası tamam kullanılan tabloları yazdık whereden sonra tablolar arası ilişkiyi kurduk Sum kullandığımızdan dolayı group by ile yazarAdSoyada göre gruplandırma yaptık en sonda group bydan sonra kısıtlama yapmak istediğimizden dolayı having kullandık Countla saydırıp 3 tane kitabı olanları listelemiş olduk */