Mssql Server GROUP BY - Gruplama Yapmak / Ders 7
 

Mssql Server GROUP BY - Gruplama Yapmak / Ders 7(VİDEO)

Bu video çekimimde ve makalemde Sql Server'da gruplama yaparken kullanılan GROUP BY deyimini anlatacağım.GROUP BY yönteminde sıkça hata yapılan 3 önemli noktaya değineceğim.GROUP BY yönteminde fonksiyon kullanımının nasıl yapılacağını anlatacağım.

GROUP BY - Gruplama Nerede Kullanılır ?

Bu soruyu aklınıza getirebilirsiniz.Bunun nerelerde gerekli olduğunu en iyi bir örnek üzerinde açıklayayım.Aşağıdaki Şekildeki gibi bir tablomuz olsun .İller ve ülkelerinin bulunduğu bir tablodur.


Tablomuzda bulunan verilerde aşağıdaki gibi olsun

Sorumuz şu , hangi ülkenin kaç tane ili olduğunu görmek istiyorum.Tablomuza göre Türkiye 3 , Hollanda 1 , İngiltere  2 , Amerika 2 , Hindistan 2 , Pakistan 1 ile sahiptir.

Ben şu şekilde bir listeleme istiyorum
Türkiye   3
Hollanda 1
İngiltere 2
Hindistan 2
Pakistan 1    , şeklinde bana hangi ülkenin kaç ili olduğunu getirsin.Yani her ülke gruplara ayrılsın her gruptaki il sayısı gözüksün. İşte gruplama deyimi buradan çıkmaktadır. Belli nitelikleri sağlayan değerleri  bir ana çatıda gruplamak istiyoruz. Bunun için Sql'de GROUP BY deyimi kullanılır.

GROUP BY deyimini   Sql dilinde WHERE deyiminden sonra kullanılır. GROUP BY kullanırken belli sıkıntılar karşınıza çıkabilir şimdi örnek uygulama ile GROUP BY kullanımını ve çıkan sıkıntılarını 3 önemli adımda anlatacağım.

1.Önemli Nokta
İlk olarak GROUP BY yaparken kime göre gruplayacağımızı belirlemek ilk adımdır.Bu örnekte Ülke Adlarına göre mi yoksa İl Adlarına göre mi gruplayacağız aşağıdaki resim ile açıklayayım .


Şekilde gösterildiği gibi İller , ülke çerçevesi içine alınmış durumda.Her çerçevedeki toplam kırmızı nokta sayısı o ülkede bulunan il sayısını veriyor.Görüldüğü gibi her çerçeve kendi içerisinde bir grup olmuş durumda. İçerdeki illerde grup üyeleri konumunda. Yani işlemimizde gruplama işlemi Ülke Adlarına göre yapılır sonucunu çıkarırız.Kime göre gruplama yapacağımızı bulduktan sonra artık sorgumuzu yazmaya başlayabiliriz.


SELECT *  FROM Ulkeler  GROUP BY UlkeAd   , bu şekilde çalıştırıldığında


2.Önemli Nokta
Column 'Ulkeler.Id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. 
şeklinde bir hata verecektir.Gruplama yaparken dikkat edilmesi gereken ikinci nokta select deyiminde hangi sütunları göstermek istediğin yanlış bir sütun göstermeye çalışıldığında yukarıdaki group by hatasını verecektir.


Hatada açıklaması şöyle , biz Gruplama yapmak istedik * ile tüm sütunları çeksin dedik  Ulkeler  tablosundaki değerlere baktığımızda  Türkiye 3 satırda var  biz Gruplama ile Türkiye'yi bir satırda yazdırmak ve il sayısını da yazdırmak istiyorduk. * ile Id değerini de yazdırmak istedik fakat hata verdi.Hata da sen gruplama yapıyorsun Id değerini yazdırmak istiyorsun ben Türkiye'yi bir satırda yazacağım ve bu yazacağım satırda hangi Id değerini kullanayım Türkiye 3 satırda 1,2,3  Id değerlerine sahip hangisi kullanacağım.İşte bu bilinmezlikten olayı hata verecektir.

Aynı şekilde sorguyu şu şekilde de yapmış olsaydık
SELECT  UlkuAd , IlAd FROM Ulkeler  GROUP BY UlkeAd 

Column 'Ulkeler.IlAd' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.  şeklinde benzer hatayı verecekti Türkiye'yi bir satırda gruplarken ben hangi ili yazayım 3 satırda da farklı il değerleri bulunmakta.


Yani Sql Server'da GROUP BY yöntemi ile gruplama yaparken dikkat etmemiz gereken 2.kavram Select ile göstermek istediğimiz sütunlara dikkat edelim , mantıken gittiğimizde zaten hangi sütunların gösterilmeyeceğini rahatlıkla anlayabiliriz.

Sorgumuz doğru hali ile yazalım ,
SELECT  UlkeAd, Count(IlAd) FROM Ulkeler
GROUP BY UlkeAd   


Burada Count verilen gruba ait toplam satır sayısını verecektir.
Aşağıdaki şekilde de kullanılabilirdi
SELECT  UlkeAd, Count(UlkeAd) FROM Ulkeler
GROUP BY UlkeAd   

3.Önemli Nokta
GROUP BY yönteminde dikkat edilmesi gereken 3.nokta SUM,AVG,COUNT vs. fonksiyonlar GROUP BY yönteminde kullanılıyorsa bu fonksiyonlara  her grup değerinin kendi içerisindeki satırlara uygulanır.Yani her grup kendi içerisinde değerlendirilir bu fonksiyonlarda.Bu da 3. ve çok önemli noktasıydı.

Tüm bu anlattıklarımın video uygulaması



İyi Çalışmalar Arkadaşlar

 

Author: Engin ATALAY
Date: 24.02.2013 13:42:54
View Count: 8108
 
 

COMMENTS
 
Resim Yüklenemedi
Seda
27 Mart 2018 20:09
Süper anlatmışssınız elerinize sağlık
 
 
 
 
 
Resim Yüklenemedi
Misafir
3 Aralık 2014 12:00
Çok kaliteli ve açıklayıcı bir çalışma olmuş. Teşekkür ederim. Emeğinize sağlık..
 
 
 
 
 
Resim Yüklenemedi
güzel
12 Kasım 2014 01:40
emeğine sağlık
 
 
 
 
 
Resim Yüklenemedi
Xetai
26 Aralık 2013 10:23
Teshekkurler hocam!
 
 
 
 
 
 
 
 
 
 
 
 
WRITE COMMENT
 
 
Your Name :
 
 
 
E-mail :
 
 
 
Your Message :
 
 
 
 
 
 
 
This project : ASP.NET MVC , RAZOR, Entity Framework , CSS , HTML , JQUERY(2.0.2) , AJAX the C# side-tier architecture was developed with logic.
 
Yukarı Çık