MS SQL Dersleri – 10 GROUP BY Kullanımı

Bu yazımızda GROUP BY metodunun kullanımını tablomuzun üzerinde örnek senaryolarla incelemeye çalışacağız.

Öncelikle müşteri tablomuzda ki dataları görelim.

Müşteri tablomuzda DogumYeri alanını gruplayıp, bu illerde doğmuş kaç müşterimiz olduğunu görelim.

SELECT DogumYeri AS DogumYeri,
       COUNT(DogumYeri) AS Toplam
FROM dbo.Musteri
GROUP BY DogumYeri

Sorgumuzu incelediğimizde daha önce görmediğimiz COUNT fonksiyonunu kullandığımızı göreceksiniz. Bu fonksiyonu ayrı bir yazımızda detaylıca inceleyeceğiz. Ama kısaca bahsetmek gerekirse bir tablo veya alanda ki kayıt sayılarını vermektedir. AS (Aliases) ifadesi ile ilgili de CRUD işlemleri yazımızda nasıl bir işlev gördüğünden bahsetmiştik. Şimdi sorgumuzu çalıştırıp sonuçlarını görelim.

Sonuç olarak müşterilerimizi doğum yerine göre grupladığımız da İstanbul’da 3 ve İzmir’ de 1 müşterimizin doğduğunu görüyoruz. GROUP BY komutunu WHERE komutu ile birlikte kullanımını inceleyelim.

SELECT Soyadi AS Soyadi,
       COUNT(Soyadi) AS Toplam
FROM dbo.Musteri
WHERE Soyadi IN ( 'Aravi', 'Başal' )
GROUP BY Soyadi;

Sorgumuzda soyadı ‘Aravi’ ve ‘Başal’ olan müşterilerimizin kaç adet olduğunu öğrenmek istiyoruz.

Sonuç olarak 1 adet ‘Aravi’ ve 2 adet ‘Başal’ soyadlı müşterimizi olduğunu görüyoruz.

GROUP BY’ı en sade hali ile kullanmamamın sebebi DISTINCT komutu ile arasında ki farkı görmeniz. GROUP BY komutunu en sade hali ile kullandığımızda DISTINCT ile arasında bir fark olmadığını göreceksiniz. Ama sorgumuz içerisinde kayıt sayısı veya alanlar üzerinde toplama yapmak istersek GROUP BY kullanmak zorundayız. GROUP BY komutu en sade hali ile DISTINCT komutunu karşılaştıralım.

SELECT DogumYeri AS DogumYeri
FROM dbo.Musteri
GROUP BY DogumYeri

SELECT DISTINCT
       DogumYeri AS DogumYeri
FROM dbo.Musteri

Sorgu sırasına göre sonuçlarımız.

Gördüğümüz gibi her iki sorgu da aynı sonucu bizlere dönmektedir. DISTINCT ile ilgili detaylı bilgi için konuyla ilgili yazımı okuyabilirsiniz.

Yazımızın sonuna geldik. Konuyla ilgili eksik gördüğünüz veya sormak istediğiniz sorular için mail adresimden veya yorumlardan bana ulaşabilirsiniz.

Share

Add a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir