Mssql Server GROUP BY - Gruplama Yapmak / Ders 7
 

Mssql Server GROUP BY - Gruplama Yapmak / Ders 7(VIDEO)

Bu video çekimimde ve makalemde Sql Server'da gruplama yaparken kullanilan GROUP BY deyimini anlatacagim.GROUP BY yönteminde sikça hata yapilan 3 önemli noktaya deginecegim.GROUP BY yönteminde fonksiyon kullaniminin nasil yapilacagini anlatacagim.

GROUP BY - Gruplama Nerede Kullanilir ?

Bu soruyu akliniza getirebilirsiniz.Bunun nerelerde gerekli oldugunu en iyi bir örnek üzerinde açiklayayim.Asagidaki Sekildeki gibi bir tablomuz olsun .Iller ve ülkelerinin bulundugu bir tablodur.


Tablomuzda bulunan verilerde asagidaki gibi olsun

Sorumuz su , hangi ülkenin kaç tane ili oldugunu görmek istiyorum.Tablomuza göre Türkiye 3 , Hollanda 1 , Ingiltere  2 , Amerika 2 , Hindistan 2 , Pakistan 1 ile sahiptir.

Ben su sekilde bir listeleme istiyorum
Türkiye   3
Hollanda 1
Ingiltere 2
Hindistan 2
Pakistan 1    , seklinde bana hangi ülkenin kaç ili oldugunu getirsin.Yani her ülke gruplara ayrilsin her gruptaki il sayisi gözüksün. Iste gruplama deyimi buradan çikmaktadir. Belli nitelikleri saglayan degerleri  bir ana çatida gruplamak istiyoruz. Bunun için Sql'de GROUP BY deyimi kullanilir.

GROUP BY deyimini   Sql dilinde WHERE deyiminden sonra kullanilir. GROUP BY kullanirken belli sikintilar karsiniza çikabilir simdi örnek uygulama ile GROUP BY kullanimini ve çikan sikintilarini 3 önemli adimda anlatacagim.

1.Önemli Nokta
Ilk olarak GROUP BY yaparken kime göre gruplayacagimizi belirlemek ilk adimdir.Bu örnekte Ülke Adlarina göre mi yoksa Il Adlarina göre mi gruplayacagiz asagidaki resim ile açiklayayim .


Sekilde gösterildigi gibi Iller , ülke çerçevesi içine alinmis durumda.Her çerçevedeki toplam kirmizi nokta sayisi o ülkede bulunan il sayisini veriyor.Görüldügü gibi her çerçeve kendi içerisinde bir grup olmus durumda. Içerdeki illerde grup üyeleri konumunda. Yani islemimizde gruplama islemi Ülke Adlarina göre yapilir sonucunu çikaririz.Kime göre gruplama yapacagimizi bulduktan sonra artik sorgumuzu yazmaya baslayabiliriz.


SELECT *  FROM Ulkeler  GROUP BY UlkeAd   , bu sekilde çalistirildiginda


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. 
seklinde bir hata verecektir.Gruplama yaparken dikkat edilmesi gereken ikinci nokta select deyiminde hangi sütunlari göstermek istedigin yanlis bir sütun göstermeye çalisildiginda yukaridaki group by hatasini verecektir.


Hatada açiklamasi söyle , biz Gruplama yapmak istedik * ile tüm sütunlari çeksin dedik  Ulkeler  tablosundaki degerlere baktigimizda  Türkiye 3 satirda var  biz Gruplama ile Türkiye'yi bir satirda yazdirmak ve il sayisini da yazdirmak istiyorduk. * ile Id degerini de yazdirmak istedik fakat hata verdi.Hata da sen gruplama yapiyorsun Id degerini yazdirmak istiyorsun ben Türkiye'yi bir satirda yazacagim ve bu yazacagim satirda hangi Id degerini kullanayim Türkiye 3 satirda 1,2,3  Id degerlerine sahip hangisi kullanacagim.Iste bu bilinmezlikten olayi hata verecektir.

Ayni sekilde sorguyu su sekilde de yapmis olsaydik
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.  seklinde benzer hatayi verecekti Türkiye'yi bir satirda gruplarken ben hangi ili yazayim 3 satirda da farkli il degerleri bulunmakta.


Yani Sql Server'da GROUP BY yöntemi ile gruplama yaparken dikkat etmemiz gereken 2.kavram Select ile göstermek istedigimiz sütunlara dikkat edelim , mantiken gittigimizde zaten hangi sütunlarin gösterilmeyecegini rahatlikla anlayabiliriz.

Sorgumuz dogru hali ile yazalim ,
SELECT  UlkeAd, Count(IlAd) FROM Ulkeler
GROUP BY UlkeAd   


Burada Count verilen gruba ait toplam satir sayisini verecektir.
Asagidaki sekilde de kullanilabilirdi
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 kullaniliyorsa bu fonksiyonlara  her grup degerinin kendi içerisindeki satirlara uygulanir.Yani her grup kendi içerisinde degerlendirilir bu fonksiyonlarda.Bu da 3. ve çok önemli noktasiydi.

Tüm bu anlattiklarimin video uygulamasi



Iyi Çalismalar Arkadaslar

 

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

COMMENTS
 
Resim Yüklenemedi
deliderviş
15 Ağustos 2019 18:31
Nereleri gezdim ne yabanci siteleri gezdim böyle temiz anlatan bulamadim. Harika olmius ellerinize saglik.
 
 
 
 
 
Resim Yüklenemedi
Seda
27 Mart 2018 20:09
Süper anlatmisssiniz elerinize saglik
 
 
 
 
 
Resim Yüklenemedi
Misafir
3 Aralık 2014 12:00
Çok kaliteli ve açiklayici bir çalisma olmus. Tesekkür ederim. Emeginize saglik..
 
 
 
 
 
Resim Yüklenemedi
güzel
12 Kasım 2014 01:40
emegine saglik
 
 
 
 
 
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