Sql Group By Nedir ? Nasıl Kullanılır ?

Group by sqlde bir select sorgusunda ilişkili satırlarının gruplanarak kullanılması durumunda işe yaramaktadır. Ne gibi durumlarda işimize yarayacaktır peki ? Aslında bakılırsa orta ölçekli bir sorgu yazmaya başladığınızda anda group by sorgunun her alanında karşımıza çıkacaktır.

Daha açık bir örnek vermek gerekir ise bir mağazamız olsun 3 adette kasiyerimiz olsun, Sabahtan akşama kadar bu kasiyerler durmadan satış yapsınlar gün sonunda ise her kasiyer ne kadarlık ürün satmış görmek istediğimizde sorgumuzu kasiyere göre gruplayarak almamız gerekir.

Teorik olarak başka bir örnek daha verelim, Türkiyenin 81 ilinde futbolcular bulunmaktadır. Bir veritabanı düşünün il, ilçe, futbolcu adı ,oynadığı kulüp bilgielrini tutmuş olsun, Hangi ilde ne kadar futbolcu var diye bir soru sorarsa group by ile illere göre gruplayıp COUNT(*) fonksiyonu ilede futbolcu sayılarını elde etmiş oluyoruz. Hemen hemen her türlü gruplama işlemi için group by ifadesini kullanırız.

select  [Kolon1],[Kolon2],SUM([Kolon3])  from [Table Name] group by [Kolon1],[Kolon2]…

şeklinde yazımı bulunmaktadır.

Örnek bir sorgu konuyu daha da detaylandırmamız gerekir ise ;

Satışlarımızı içeren bir veri tabanımız olsun içerisinde satış tarihi, ürün kodu ve satış miktarımız bulunsun ,

Burada her gün hangi ürünlerden kaç adet satıldığı bilgisi bulunmakta ,

Şimdi ise Gün Gün hangi üründen kaç adet satıldığı bilgisine erişelim , Aşağıda dikkat ederseniz gün gün ve ürün ürün gruplama yapmış olduk ,

daha farklı şekilde bakmak gerekir ise sadece gün gün gruplama yapmak ister isek ;

Yukarıda dikkat ederseniz günler tekrarlamamaktadır çünkü güne göre gruplamış olduk , gün gün satış miktarlarımız gelmiş oldu , eğer ürünleri group by ifadesine eklemeden direk select içine koyarsanız hata alacaksınız çünkü string bir ifade içerdiğinden group by’da yer almalı eğer ki sayısal bir ifade ise o zaman COUTN,SUM,MAX,MIN ,AVG gibi Aggregate Function (Hesaplama Fonksiyonları) ile hesaplatmanız gerekir.

 

Paylaş

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.