GRUPLANDIRARAK SORGULAMA Bir tablo ierisinde ortak zelliklere sahip
GRUPLANDIRARAK SORGULAMA Bir tablo içerisinde ortak özelliklere sahip satırları kapsar. Şuana kadar kullanılan SQL ifadeleri satırları bağımsız olarak değerlendirmektedir. Birden fazla satırla ilgili işlem yapılması istendiğinde grup fonksiyonları kullanılır. Bu fonksiyonlar istendiğinde GROUP BY ifadesiyle belirli gruba uygulanabilir. Fonksiyonlar gruba uygulandığında oluşan grup sayısı kadar satır geri dönecektir. Kullanım şekli SELECT sütun_adları FROM tablo_adı WHERE koşul GROUP BY gruplama_sütun_adı HAVING koşul ORDER BY sütun_adları Sütun_adları ve gruplama_sütun_adı tablonun içerdiği sütun isimlerini içermelidir. GROUP BY ifadesinden sonra gruplama hangi sütuna yapılacaksa o sütunun adı yazılır. WHERE, ORDER BY ve HAVING ifadelerinin kullanım zorunluluğu yoktur. HAVING ifadesi gruplandırma üzerinde koşul belirtmek için kullanılır.
GRUPLANDIRARAK SORGULAMA Kullanım şekli SELECT sütun_adları FROM tablo_adı WHERE koşul GROUP BY gruplama_sütun_adı HAVING koşul ORDER BY sütun_adları Sütun_adları ve gruplama_sütun_adı tablonun içerdiği sütun isimlerini içermelidir. GROUP BY ifadesinden sonra gruplama hangi sütuna yapılacaksa o sütunun adı yazılır. WHERE, ORDER BY ve HAVING ifadelerinin kullanım zorunluluğu yoktur. HAVING ifadesi gruplandırma üzerinde koşul belirtmek için kullanılır.
GRUPLANDIRARAK SORGULAMA GROUP BY ifadesinin özellikleri • SQL ifadelerinde WHERE ifadesinden sonra ve ORDER BY ifadesinden önce kullanılmalıdır. • Gruplanacak sütunlar tablonun içerdiği sütunlar veya hesaplama işlemleri sonucunda elde edilmiş sütunlar olabilir. • Gruplama yapılan sütun NULL değeri içeriyorsa bunlar tek bir grup olarak toplanır. • HAVING ifadesi ile koşul belirtilirken sütunlara verilen takma isimler koşul sütunu için kullanılmaz. Gruplamada Kullanılan Fonksiyonlar Bu fonksiyonlar çoğunlukla gruplandırma işleminde kullanılır. Gruplama sonucunda satırlar artan şekilde olacaktır. İstenirse ORDER BY ifadesi kullanılarak sıralama değiştirilebilir. AVG(): Sorgu soncunda oluşan grupların istenilen sütun içerisindeki değerlerin ortalamasını verir. COUNT(): Sorgu sonucunda oluşan grupların satır sayısını verir. MAX(): Sorgu sonucunda olaşan grupların istenilen sütun içerisindeki en büyük değeri verir. MIN(): Sorgu sonucunda olaşan grupların istenilen sütun içerisindeki en küçük değeri verir. SUM(): Sorgu soncunda oluşan grupların istenilen sütun içerisindeki değerlerin toplamını verir.
GRUPLANDIRARAK SORGULAMA Örnek: Aşağıda personellerin bilgilerini içeren personel tablosu verilmiştir. Personellerin mesleklerine göre maaş ortalamasını bulmak için gerek SQL ifadesini yazalım SELECT meslek, AVG(maas) AS ort FROM personel GROUP BY meslek
GRUPLANDIRARAK SORGULAMA Örnek: Aşağıda personellerin bilgilerini içeren personel tablosu verilmiştir. Her bir görevde çalışan personellerin sayısını bulmak için gereken SQL ifadesini yazalım. SELECT meslek, COUNT(meslek) AS kisi_say FROM personel GROUP BY meslek En düşük maaşı olan personeli bulmak için gerekli olan SQL ifadesini yazalım. SELECT MIN(maas) AS endüsük_maas FROM personel
GRUPLANDIRARAK SORGULAMA Birden Fazla Sütuna Göre Gruplandırmak Tek sütuna göre yapılan gruplandırma işlemi ile aynı kurallara sahiptir. Gruplanacak sütunlar GROUP BY ifadesinden sonra aralarında virgül olacak şekilde yazılır. Bu yazım şekli aynı zamanda gruplandırma sırasını da belirtir. Birden fazla sütuna göre gruplandırma işlemi yapıldığında, GROUP BY ifadesinden sonra yazılan ilk sütuna göre gruplandırma yapıldıktan sonra bir sonraki sütun ile de yapılan gruplandırma kendi içerisinde yine gruplandırılır. Örnek: Aşağıda verilen araç tablosunda her bir markadaki aracın yakıt türüne göre en yüksek ve en düşük fiyatlı olanları artan şekilde sıralayan SQL ifadesini yazalım.
GRUPLANDIRARAK SORGULAMA Örnek: Aşağıda verilen araç tablosunda her bir markadaki aracın yakıt türüne göre en yüksek ve en düşük fiyatlı olanları artan şekilde sıralayan SQL ifadesini yazalım. SELECT Arac_model, Arac_yakit, Max(Arac_fiyat) AS "En yüksek fiyat", MIN(Arac_fiyat) AS "En düşük fiyat" FROM arac GROP BY Arac_model, Arac_yakit ORDER BY Arac_model
GRUPLANDIRARAK SORGULAMA Gruplandırma İşlemlerinde Koşul İfadeleri Koşullu gruplandırmada, gruplandırma sütun ismine göre yapılmak istenirse WHERE ifadesi kullanılır ama bir fonksiyondan dönen değere göre koşul ifadesi yazılacaksa HAVING kullanılmak zorundadır. HAVING ifadesi GROUP BY ifadesinden sonra varsa ORDER BY ifadesinden önce kullanılmalıdır. HAVING ifadesinden hemen sonra koşul yazılmalıdır
GRUPLANDIRARAK SORGULAMA Örnek: Aşağıda müşterilerin borçlarını ve alacaklarını gösteren tablo verilmiştir. Bakiyesi (borçalacak) 1200'den büyük olan müşterileri listeleyen SQL ifadesini yazalım. Tablodaki kayıtlar ad-soyad sütununa göre gruplandırılıp SUM(borc) ve SUM(alacak) fonksiyonları kullanılarak müşterilerin alacak ve borç toplamı hesaplanır ve ikisinin farkı alınarak bakiye hesaplanır.
GRUPLANDIRARAK SORGULAMA Örnek: Tablo içerisinde bakiye sütunu bulunmadığından ve gruplandırmayla bulunduğu için bakiye>1200 koşulu HAVING ifadesi ile yazılmalıdır. SELECT adi_soyadi, (SUM(borc)-SUM(alacak)) AS Bakiye FROM musteri GROUP BY adi_soyadi HAVING(SUM(borc)-SUM(alacak))>1200
- Slides: 10