T-SQL GROUP BY İşlemi

GROUP BY komutu, T-SQL’de verileri belirli sütunlara göre gruplamak ve bu gruplar üzerinde toplu hesaplamalar (aggregate) yapmak için kullanılır. Bu komut, veri analizi ve raporlama için temel bir araçtır.

Komut Kullanımı:

SELECT [sütun_listesi], [aggregate_fonksiyonları]
FROM [tablo_adı]
[WHERE koşul]
GROUP BY [gruplama_sütunları]
[HAVING grup_koşulu]
[ORDER BY sıralama_sütunu]

Örnekler üzerinden işlemleri gerçekleştirelim. Aşağıdaki komutta Products tablosunda bulunan Her bir CategoryID’ye karşılık gelen tüm ürünlerin toplam sayısını vermektedir.

SELECT CategoryID,count(*) as ProductName FROM [dbo].[Products] group by CategoryID

Yukarıdaki sorgumuzda birden fazla kolonu groupla işlemi yapabiliriz. CategoryID ve SupplierID kendi aralarında grouplanıp bu grouplama değerine göre sayısını vermektedir. İki kolon aynı olan değerleri grouplamaktadır.

SELECT CategoryID,SupplierID, count(*) as ProductNameCount FROM [dbo].[Products] group by CategoryID,SupplierID

Aşağıdaki sorgu ile ilgili personel id değerine sahip kişinin toplamda ne kadar satış yaptığını görebiliriz.

select EmployeeID,sum(Freight) as toplam_satis from dbo.Orders group by EmployeeID

Yukarıdaki sorgularımızda şart tanımlamak isteyebiliriz. Bunun için ilgili sorgularımızda where şartı kullanılarak filtreleme işlemi yapabiliriz. Where şartı group by ifadesinden önce kullanılmaktadır.

select EmployeeID,sum(Freight) as toplam_satis from dbo.Orders Where EmployeeID>4 group by EmployeeID

Yukarıdaki sorgularımızda Aggregate fonksiyonları üzerinde filtreleme yapmak için HAVING kullanılmaktadır. Where ifadesi kolonlar üzerinden yapılırken Aggregate kolonlar üzerinden HAVING kullanılmaktadır.

select EmployeeID,sum(Freight) as toplam_satis from dbo.Orders Where EmployeeID>4 group by EmployeeID HAVING sum(Freight)>4000

GROUP BY kullanıldığında, SELECT listesindeki her sütun ya GROUP BY’da olmalı ya da bir aggregate fonksiyon içinde kullanılmalıdır.

With Rollup Komut:

Group By ile guruplanmış veride ara toplam alınmasını sağlar. Bir örnek üzerinden yapımızı açıklayalım.

select SatisID,UrunID,sum(Miktar) from [Satis Detaylari] group by SatisID,UrunID with rollup

Resimde dikkat edilirse SatisID 10248 olan UrunID lerin miktarını verip ara toplamını almış bulunmaktadır. with rollup ifadesinden sonra having operatörü kullanılmaktadır.

With Cube Komut:

Group by ile guruplanmış veri kümesinde teker teker toplama işlemi yapmaktadır. WITH ROLLUP UrunID kolonuna göre ara toplam alırken. WITH CUBE komutu ise SatisID ye göre toplama işlemi yapmaktadır.

select SatisID,UrunID,sum(Miktar) from [Satis Detaylari] group by SatisID,UrunID with cube

GROUP BY, veri analizinde özellikle özet raporlar oluşturmak, verileri kategorilere ayırmak ve istatistiksel bilgiler elde etmek için vazgeçilmez bir araçtır. Başka bir makalede görüşmek dileğiyle..

“Gevşemeyin, üzülmeyin, inanmışsanız, mutlaka siz en üstünsünüzdür.” Al-i İmran-139. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir