Group By – Distinct – Having Kullanımı

nhtctn nhtctn

Group By – Gruplama : Bir fonksiyonu kullanırken bazı durumlarda GROUP BY fonksiyonu ile belli alanlara göre gruplamak gerekebilir.

Distinct : Bu ifade tablodaki belirtilen alanda bulunan kayıtlardan birer örnek alır. Yani tekrar eden kayıtlardan bir tane alır ve bunun yanına da tekrar etmeyen kayıtları koyarak bir veri kümesi oluşturur.

Having: HAVING yapısı temelde WHERE ile aynı görevi yapmaktadır. GROUP BY ile kullanılır. Where ifadesi ile belirtilen kriter Group By uygulanmadan önce geçerli olurken, Having ifadesi ile belirtilen kriter ise group by uygulandıktan sonra ortaya çıkan verileri filtrelemek için kullanılır. Ayrıca Where ifadesinden sonra sum, avg gibi fonksiyonlar kullanılamazken, Having ile kullanılabilir.

Bu görsel boş bir alt niteliğe sahip; dosya adı Screenshot_1.png

Bu konumuzu yukarıdaki tabloyu örnek alarak yapacağız.

1-select distinct Category from Product

2-select Category, count(*) as adet from Product group by Category

3-select Category, sum(Price) as toplam from Product group by Category

4-select Category, avg(Price) as ortalama from Product group by Category

5-select Category, avg(Price) as ortalama from Product where Price>3000 group by Category

6-select Category, count(*) as adet  from Product group by Category having count(*)>1
1-select distinct Category from Product

1-Product tablosunun Category alanını tekrar eden kayıtlardan sadece 1 tane alarak listeme yapar.

Bu görsel boş bir alt niteliğe sahip; dosya adı 1-7.png
2-select Category, count(*) as adet from Product group by Category

2-Product tablomuzun Category alanını listeledik ardından group by ile gruplama işlemi gerçekleştirdik. Son olarak count fonksiyonu yardımıyla her üründen kaç adet olduğunu yazdırdık.

Yukarıdaki distinct ile aynı işlemi yaptığımızı düşünebilirsiniz ama distinct ile beraber fonksiyonları kullanamıyoruz.

Bu görsel boş bir alt niteliğe sahip; dosya adı 2-6.png
3-select Category, sum(Price) as toplam from Product group by Category

3-Product tablomuzun Category alanını listeledik ardından group by ile gruplama işlemi gerçekleştirdik. Son olarak sum fonksiyonu yardımıyla price(fiyat) alanının toplamını yazdırdık.

Bu görsel boş bir alt niteliğe sahip; dosya adı 3-7.png
4-select Category, avg(Price) as ortalama from Product group by Category

4-Product tablomuzun Category alanını listeledik ardından group by ile gruplama işlemi gerçekleştirdik. Son olarak avg fonksiyonu yardımıyla price(fiyat) alanının ortalamasını yazdırdık.

Bu görsel boş bir alt niteliğe sahip; dosya adı 4-6.png
5-select Category, avg(Price) as ortalama from Product where Price>3000 group by Category

5-Product tablomuzun Category alanını listeledik, ardından group by ile gruplama işlemi gerçekleştirdik. Son olarak avg fonksiyonu yardımıyla price(fiyat) alanı 3000 tl üstü olan alanların ortalamasını yazdırdık.

Bu görsel boş bir alt niteliğe sahip; dosya adı 5-5.png
6-select Category, count(*) as adet  from Product group by Category having count(*)>1

6-Product tablomuzun Category alanını listeledik, ardından group by ile gruplama işlemini gerçekleştirdik. Count fonksiyonu yardımıyla her bir kategori için adet hesabı yaptıktan sonra having ile adet sayısı 1’den büyük olan kategorileri listeledik.

Bu görsel boş bir alt niteliğe sahip; dosya adı 6-5.png

Yorum yazın

BENZER YAZILAR