MS SQL Server Eğitimleri 46 – T-SQL Group By Kullanımı


MS SQL Server Eğitimleri 46 – T-SQL Group By Kullanımı

MS SQL Eğitimlerimize hesaplama fonksiyonlarından sonra bu hesaplama fonksiyonlarını daha anlamlı kılan Group By deyimiyle devam ediyoruz.

Olayı şöyle anlamaya çalışalım. Bir veri tabanında bir kolonda aynı tür veriden birden fazla olabilir. Örneğin kişilerin ülkelerinin girildiği Facebook da kullanılan bir tablo düşünelim. Sadece var olan ülkeleri görmek istiyoruz. İşte böyle bir durumda gruplama yöntemini kullanırız. 100 tane Türkiye olsa 50 tane Fransa olsa bize bunları Türkiye ve Fransa olarak iki ülkenin bu veri tabanında olduğunu anlatacak şekilde gruplar.

Kullanımı

Tek tek örneklerle pek çok Group By kullanımını öğreneceğiz.

XENONBOX veritabanı üzerinde işlemlerimizi yapıyor olacağız.

Step 1

PRODUCT tablosunu SUPPLIERID kolonuna göre gruplayalım.

1
2
3
4
5
6
7
8
9
11

Step 2

Gruplama işlemi yaparken tüm kolonları listeleyerek gruplama işlemi yapamazsınız. Daha önceki SQL sürümlerinde yapılabiliyordu ama anlamsız bir gruplama sonucu ortaya çıkıyordu. 2017 ile bu durumu tamamen kaldırdılar. Artık gruplayamıyorsunuz.

Bir örnek ile hatamızı görelim.

 

Step 3

Tedarikçi gruplarının toplam maliyetlerine göre bir grup oluşturalım.

14700.00
26035.00
39500.00
413800.00
55900.00
64475.00
717785.00
89100.00
93000.00
118913.00

 

Burada gerçekleşen işlemi anlatalım. Kolon olarak SUPPLIERID ve UNITPRICE ‘ın olacağını ve UNITPRICE toplamını da SUPPLIER grubuna göre yapar. Çünkü Group By içinde kullandığımız değer SUPPLIERID kolonu.Bu işlemi yaptı ve gruplama sıralamasını bize verdi. Şunu anlıyoruz. 1 ID numarasına sahip tedarikçiye ürünleri için toplam 4700 birim fiyat para ödememiz gerekiyor.

Step 4

Şimdi şunu sorgulayalım. Hangi tedarikçiye kaç sipariş vermişiz. yani her bir tedarikçi grubunun kaç adet olduğunu öğreneceğiz.

13
23
33
43
52
63
75
82
92
113

 

Step 5

Group By kullanımını birden fazla kolon ismi ile yapabilirsiniz.

Tedarikçileri temin ettikleri ürün isimleri ile beraber bir gruplayım.

1Aniseed Syrup1
1Chai1
1Chang1
2Chef Anton’s Cajun Seasoning1
2Chef Anton’s Gumbo Mix1
2Louisiana Hot Spiced Okra1
3Grandma’s Boysenberry Spread1
3Northwoods Cranberry Sauce1
3Uncle Bob’s Organic Dried Pears1
4Ikura1

 

Burada gerçekleşen işlem şudur. Gruplama işlemi sıra ile gerçekleştirilir. Önce PRODUCTNAME e göre yapıldı daha sonra o sıralama SUPPLIERID değerine göre kendi arasında bir daha gruplandı. 

Bunu net olarak anlamak içi yerlerini değiştirelim.

Önce SUPPLIERID ye göre yaptı ve sonra PRODUCTNAME’e göre yaptı ve alfabetik bir sıralama gerçekleştirdi. 

Group By ile Where Kullanımı

Gruplama işlemi yaparken de istediğimiz şartlara göre yaptırabiliriz.

Örneğin UNITPRICE değeri 10 000 den büyük olanları listeleyelim ve gruplayalım.

18Côte de Blaye26350.00
12Thüringer Rostbratwurst12379.00

 

 

Burada olan olayı anlatmak gerekirse. Öncelikle UNITPRICE  değeri 10 000 den büyük olanlar listelendi. Sonra bu değerler toplandı ve en sonunda şarta göre gruplama yapıldı.

Ama biz gruplama işlemi olduktan sonra değerin karşılaştırılmasını ve verilerin ona göre gelmesini isteseydik ne yapacaktık. O zamanda Having kavramı devreye girecek bir sonraki yazımızın konusu. 

Böyle bir durumda bulunmasını istediğimiz kolonları yazdığımız yerde Group By içine almadığımız ve herhangi bir hesaplama işlemine dahil olmamış kolon var ise bu sorgu hata verecektir. Bulunan kolonların hepsinin Group By içindede olması gerekir. Yada bir hesaplama işlemine dahil olması gerekir.

Group By kullanımı da böyleydi. Bir sonraki yazımda görüşmek üzere.

 


Like it? Share with your friends!

1585
Murat Bilginer
Industryolog Akademi Founder - Endüstri Mühendisi Canias ERP Troia Geliştiricisi & Yazılım Uzmanı 7 Yıldır bildiğini paylaşmak için çabalayan bir blogger.

You may also like

More From: MS SQL Eğitimleri

DON'T MISS