Verileri gruplayarak analiz
Grup Fonksiyonlari Tek satır fonksiyonları, tablonun bir satırına uygulanabiliyordu. Bir grup satıra bir fonksiyonun uygulanması söz konusu ise çoklu satır fonksiyonları ya da diğer bir deyişle grup fonksiyonlarından söz edilir. Fonksiyonlar Tek satır fonksiyonları Çoklu satır fonksiyonları
Avg() ve Sum() Fonksiyonlari AVG() fonksiyonu herhangi bir sütunun içerdiği sayısal değerlerin aritmetik ortalamasını hesaplamak amacıyla kullanılır. SELECT AVG(ÜCRET) AS ORTALAMA FROM PERSONEL; SUM() fonksiyonu sütunların içerdiği sayısal değerleri toplamak amacıyla kullanılır. SELECT SUM(ÜCRET) AS TOPLAM FROM PERSONEL;
Stdev () ve Varp() Fonksiyonlari STDEV() fonksiyonu sayısal verilerin standart sapmasının hesaplanmasında kullanılan fonksiyondur. ORACLE karşılığı STDDEV()’dir. SELECT STDEV(ÜCRET) AS “STANDART SAPMA” FROM PERSONEL; VARP() fonksiyonu bir dizi sayısal değerin standart sapmasını hesaplamak için kullanılır. ORACLE karşılığı VARIANCE()’dir. SELECT VARP(ÜCRET) AS VARYANS FROM PERSONEL;
Max() ve Min() Fonksiyonlari Tablonun içerdiği değerlerin içerdiği en büyük ve en küçük olanlarını bulmak için MAX() ve MIN() fonksiyonları kullanılır. Bu fonksiyonlar herhangi bir veri türüne uygulanabilir. SELECT MIN(ÜCRET) AS “EN AZ”, MAX(ÜCRET) AS “EN FAZLA” FROM PERSONEL; SELECT MAX(GİRİŞ_TAR) AS “EN SON” FROM PERSONEL; SELECT MIN(ADI) AS “İLK İSİM” FROM PERSONEL;
Count() Fonksiyonu Bir tablodaki kayıtların tutulması amacıyla kullanılır. İki farklı biçimde kullanılabilir: COUNT(*) fonksiyonu, NULL değerleri de içeren tüm kayıtların sayılmasına neden olur. SELECT COUNT(*) AS “KAYIT SAYISI” FROM PERSONEL WHERE BÖLÜM_NO=‘30’; COUNT(sütun) biçiminde kullanılırsa NULL değerler içermeyen tüm kayıtların sayılmasına neden olur. SELECT COUNT(KOMİSYON) AS “KOMİSYON ALAN” FROM PERSONEL;
GRUPLAMA İŞLEMLERİ Bir tablonun satırları gruplara ayrılarak, grup fonksiyonlarının bunlara uygulanması sağlanabilir. GROUP BY sözcüğünden faydalanılır. Örnek: Personel tablosuna göre, her bölüm için personel sayısını, ücret toplamını ve ortalama ücretleri hesaplamak için: SELECT BÖLÜM_NO, COUNT(ADI) AS SAYI, SUM(ÜCRET) AS TOPLAM, AVG(ÜCRET) AS ORTALAMA FROM PERSONEL GROUP BY BÖLÜM_NO;
Birden fazla sütuna göre gruplama GROUP BY ile bir sütuna göre gruplama yapılabildiği gibi, birden fazla sütun için de gruplama yapılabilir. Örnek: Her bölümü ve bölüm içindeki görevlere göre personeli gruplayarak bu bazda ücret toplamları elde etmek için: SELECT BÖLÜM_NO, GÖREVİ, SUM(ÜCRET) FROM PERSONEL GROUP BY BÖLÜM_NO, GÖREVİ;
Grup Koşullarinin Kullanimi Grup işlemleri yerine getirilirken, grup bazında sınırlamalar söz konusu olabilir. Örneğin, bölüm bazında bir işlemin, bölüm ücret ortalamasının 2000’den büyük ise gerçekleşmesi istenebilir. Hatalı SELECT BÖLÜM_NO, AVG(ÜCRET) FROM PERSONEL WHERE AVG(ÜCRET)>2000 GROUP BY BÖLÜM_NO; Doğru SELECT BÖLÜM_NO, AVG(ÜCRET) FROM PERSONEL GROUP BY BÖLÜM_NO HAVING AVG(ÜCRET)>2000; Grup koşulları WHERE içinde tanımlanamaz. Onun yerine HAVING sözcüğü kullanılır.
Grup Koşullarinin Kullanimi Örnek: Ortalama ücreti 3500’den fazla olan bölümlerin bölüm numarası ve o bölümdeki en yüksek ücret miktarını görüntülemek için: SELECT BÖLÜM_NO AS “BÖLÜM NO”, MAX(ÜCRET) AS “EN ÇOK” FROM PERSONEL GROUP BY BÖLÜM_NO HAVING AVG(ÜCRET)>3500;
Grup Koşullarinin Kullanimi Örnek: Pazarlama bölümü dışında çalışan personeli görevlerine göre gruplandırıp ücretleri toplayan; bölümün toplam ücretini 5000’den fazla olanlar seçen ve sonuçları en düşük ücret toplamından büyüğe doğru sıralamak için: SELECT GÖREVİ, SUM(ÜCRET) AS TOPLAM FROM PERSONEL WHERE GÖREVİ <> ‘PAZARLAMACI’ GROUP BY GÖREVİ HAVING SUM(ÜCRET) > 5000 ORDER BY SUM(ÜCRET);