distinct ile group by komutlarının özellikleri ve farkları Ankara Üniversitesi Fen Fakültesi Astronomi ve Uzay Bilimleri AST302 Astronomide Veri Analizi Hazırlayan Mesut Yazıcı Güncelleme Yahya Demircan ©2011
Fark 1 distinct komutu select’in yanına yazılır. Örneğin; select distinct adi from ozluk group by komutu ise where kısmına koşul yazılacaksa, koşul yazıldıktan sonra kullanılır. Örnek select adi,count(*) from ozluk where cinsiyeti=‘E’ group by adi Koşul yoksa from’dan sonra kullanılır.
Özellik 1 group by’ın yanına ne yazıldıysa, select’in yanına da aynı ifade yazılmalıdır. Örneğin; select left(adi,1),count(*) from ozluk group by left(adi,1)
Fark 2 distinct komutu belirtilen alana göre, benzer olanlardan birer tanesini seçer. Örneğin; ozluk tablosundan adi ve soyadi sütunlarını ele alalım. select distinct adi from ozluk distinct bu Ahmet’lerden sadece bir tanesini alır Adi Soyadi Ahmet Aksoy Kılıç Benay Ali Tok Sına Ayşe Gül Bekir Sağır Ahmet Ahmet Ahmet Ahmet Ahmet Ali Ali Ali Ayşe Ali Ayşe Ayşe Bekir Bekir Bekir bir tane mevcut olanı da aynı şekilde alır
group by komutu ise belirtilen alana göre, benzer olanları, tek bir grup içinde toplar. Örneğin; ozluk tablosundan adi ve soyadi sütunlarını ele alalım. Select adi from ozluk group by adi Ahmet kümesi Adi Soyadi Ahmet Aksoy Kılıç Benay Ali Tok Sına Ayşe Gül Bekir Sağır adi sütunu altındaki tüm ahmetler burda toplanır (3 x Ahmet) (2 x Ali) Ayşe kümesi Ali kümesi Bekir kümesi 1 x Ayşe 1 x Bekir
Sonuç olarak, distinct komutu ile elde edilen durum group by komutu ile elde edilen durum Ahmet Ahmet Ahmet Ahmet Ahmet Ahmet Ahmet Tüm Ahmet’lerin Ali’lerin Ayşe’lerin vs… Hepsinden birer tanesi alındı. Ahmet Ahmet Ali Ahmet Ahmet Ayşe Ahmet Ayşe Ayşe Ayşe Ayşe Ayşe Ayşe Ayşe Ali Ali Ali Ali Bekir Ali Ali Ali … Tüm Ahmet’ler Ali’ler Ayşe’ler vs… Hepsi bir grup içinde toplandı ve sayıları belli. . . .
Burada gösterdiğimiz örnekte, select distinct adi from ozluk Select adi,count(*) from group by adi Her iki komutta da “adi” örneği için aynı sonuç alınır. Ancak çalışma prensipleri arasında bu şekilde farklılıklar vardır. group by komutunu “kaç kişi”, “kaç tane”, “kaçar öğrenci vardır”… gibi sorularda kullanmak yararlıdır. Çünkü grupladığımız isim, cinsiyet, sınıf… gibi alanlardan istediğimiz kadarını, yazdığımız koşullar altında rahatlıkla alabiliriz.
Teşekkürler…