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: 11649
COMMENTS
deliderviş
15 Ağustos 2019 18:31
Nereleri gezdim ne yabanci siteleri gezdim böyle temiz anlatan bulamadim. Harika olmius ellerinize saglik.
Seda
27 Mart 2018 20:09
Süper anlatmisssiniz elerinize saglik
Misafir
3 Aralık 2014 12:00
Çok kaliteli ve açiklayici bir çalisma olmus. Tesekkür ederim. Emeginize saglik..
güzel
12 Kasım 2014 01:40
emegine saglik
Xetai
26 Aralık 2013 10:23
Teshekkurler hocam!
WRITE COMMENT
Your Name :
E-mail :
Your Message :
HOME / ABOUT ME / ARTICLES / RSS
/ CONTACT
Copyright © 2013 Engin ATALAY / All articles in the site Engincode.com the Publisher .
This project : ASP.NET MVC , RAZOR, Entity Framework , CSS , HTML , JQUERY(2.0.2) , AJAX the C# side-tier architecture was developed with logic.