distinct ile group by komutlarının özellikleri ve farkları

Download Report

Transcript distinct ile group by komutlarının özellikleri ve farkları

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.
Örnek
select adi,count(*)
from ozluk
group by adi
Ö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
Adi
Soyadi
Ahmet
Aksoy
Ahmet
Ahmet
Kılıç
Ahmet
Ahmet
Benay
Ahmet
Ali
Tok
Ali
distinct bu Ahmet’lerden
sadece bir tanesini alır
Ahmet
Ahmet
Ali
Sına
Ali
Ali
Ali
Ayşe
Ayşe
Gül
Ayşe
Ayşe
Bekir
Bekir
Sağır
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
Adi
Soyadi
Ahmet
Aksoy
Ahmet
Kılıç
Ahmet
Benay
Ali
Tok
Ali
Sına
Ayşe
Gül
Bekir
Sağır
Bekir kümesi
1 x Bekir
Ahmet kümesi
adi sütunu altındaki
tüm ahmetler burda
toplanır
(3 x Ahmet)
(2 x Ali)
Ayşe kümesi
1 x Ayşe
Ali kümesi
Sonuç olarak,
distinct komutu ile elde
edilen durum
Ahmet
Ali
Ayşe
Bekir
Tüm Ahmet’lerin
Ali’lerin
Ayşe’lerin vs…
Hepsinden birer
tanesi alındı.
group by komutu ile elde
edilen durum
Ahmet
Ahmet
Ahmet Ahmet
AhmetAhmet
Ahmet Ahmet
AhmetAhmet
Ahmet
Ayşe
AyşeAyşeAyşe
Ayşe
Ayşe
Ayşe
AliAliAli Ali
AliAli 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…