Grup fonksiyonları tek kayıt fonksiyonlarından farklı olarak birden çok girdi(satır) alıp sonuç olarak da bir tane sonuç dönderen fonksiyonladır.

Girdi değerleri sorgu çalışıp tüm kayıtlar çekilmeden belli olmaz. Tek kayıt fonksiyonlarında girdi sayısı SQL cümlesinin ayrıştırılma işlemi sırasında bilinir. Bu özelliğiyle grup fonksiyonları kullanımı ve sonuçları yönüyle tek kayıt fonksiyonlarından ayrılır.

Grup fonksiyonları SQL cümlelerinin SELECT ya da HAVING kısımlarında yer alabilir. SELECT kısmında kullanıldığı zaman genelde GROUP BY ifadesi ile birlikte kullanılır. Eğer GROUP BY ifadesinde gruplamanın neye göre yapılacağı belirtilmez ise gruplama işlemi için kayıtların tamamı kullanılır. Grup fonksiyonları SQL cümlelerinin WHERE kısmında kullanılamaz.
Söz dizimi ;

SELECT [sütun,] grup_fonksiyonu(sütun|*),…
FROM tablo
[WHERE koşul]
GROUP BY sütun
[HAVING sütun]
[ORDER BY sütun];

NOT :  Grup fonksiyonları NULL değerleri dikkate almaz ve genelde NULL sonucu döndürmezler. Örneğin COUNT ve SUM fonksiyonlarına NULL değerler verdiğimiz zaman 0 (sıfır) sonucunu alırız.

  • Örnegin aşagıda ki sorgu da employees tablosun da commission_pct sütunun da Null olan degerleri dikkate almadan sayma işlemini yapar.
Select COUNT(commission_pct) from employees;

NOT : Bir SQL sorgusunda birden fazla grup fonksiyonu kuallanabiliriz.

Select COUNT(manager_id),AVG(salary) from employees ;

NOT :  Grup fonksiyonu içine DISTINCT veya ALL ile belirtmezsek fonksiyon ALL kulanılmış gibi çalışmaktadır. Fakat * işareti ile DISTINCT veya ALL anahtar kelimelerini birarada kullanamazsınız.Çünkü * işareti NULL değerleri de gruba dahil edecektir ancak DISTINCT veya ALL anahtar kelimeleri NULL değerlerin grup dışında tutulmasını temin etmektedirler.

  • Aşagıda ki sorgu da employees tablosun da NULL degerler hariç tekrar edenler de dahil olmak üzere salary sütunun daki kayıtların sayısını döner.
Select COUNT(ALL salary) from employees;
  • Aşagıda ki sorgu da employees tablosun da NULL degerler ve tekrar eden kayıtlar hariç salary sütunun daki kayıtların sayısını döner.
Select COUNT(DISTINCT salary) from employees;
  • Aşagıda ki sorgu da ALL anahtar sözcügü kullanılmış gibi employees tablosun da NULL degerler hariç tekrar edenler de dahil olmak üzere salary sütunun daki kayıtların sayısını döner.
Select COUNT(salary) from employees;

COUNT Fonksiyonu

Count fonksiyonu grupda kaç tane veri oldugu döner * işareti kullanılmazsa NULL degerleri saymaz.Sayısı hesaplanacak olan grup * işaretiyle belirtilirse tabloda ki tüm sütunları içerecektir.* işareti kullanıldıgı zaman sütunlarda ki NULL degerler dahi sayılacaktır.

  • Aşagıda ki sorgu da employees tablosun da tekrar eden kayıtlar da dahil kayıtların sayısını döner.
Select COUNT(*) from employees;

İstersek * işareti yerine tabloda ki belirli bir sütunun isminide yazabiliriz ama NULL değerleri bu sefer saymaz.

  • Aşagıda ki sorgu da employees tablosun da tekrar eden kayıtlar da dahil fakat NULL degerler hariç first_name sütununda ki kayıtların sayısını döner.
 Select COUNT(first_name) from employees;
  • Aşagıda ki sorgu da employees tablosun da tekrar eden kayıtlar ve NULL degerler hariç commission_pct sütununda ki kayıtların sayısını döner.
Select COUNT(DISTINCT commission_pct) from employees;
  • Aşagıda ki sorgu da employees tablosun da ki first_name ve last_name sütununu birleştirir ve NULL olmayan kayıtların sayısını döner.first_name veya last_name sütunlarından herhangi birisi NULL degilse bunlar da sayılır.
Select COUNT(first_name||' '||last_name) from employees;

SUM Fonksiyonu

Sayısal türde veri barındıran sütunlarda ki değerleri toplayarak sonucu döndüren bir fonksiyondur. Söz dizimi ;
SUM ( ALL | DISTINCT sütun_adı)

  • Aşagıda ki sorgu da employees tablosun da tekrar eden kayıtlar da dahil fakat NULL degerler hariç salary sütununda ki degerlerin toplamını döner.
Select SUM(salary) from employees;
  • Aşagıda ki sorgu da employees tablosun da tekrar eden kayıtlar bir defa işleme alınmak kaydıyla ve NULL degerler de hariç salary sütununda ki degerlerin toplamını döner.
Select SUM(Distinct salary) from employees;

NOT:SUM fonksiyonuna karakter ya da tarih tipinde veriler ile işlem yapamaz.

AVG Fonksiyonu

AVG fonksiyonu sayısal türde veri barındıran bir sütunda ki değerlerin ortalama değerini almak üzere kullanacağımız fonksiyondur. Söz dizimi ;
AVG ( ALL | DISTINCT sütun_adı)

  • Aşagıda ki sorgu da employees tablosun da tekrar eden kayıtlar da dahil fakat NULL degerler hariç salary sütununda ki degerlerin ortalamasını döner.
Select AVG(salary) from employees;
  • Aşagıda ki sorgu da employees tablosun da tekrar eden kayıtlar bir defa işleme alınmak kaydıyla ve NULL degerler de hariç salary sütununda ki degerlerin ortalamasını döner.
Select AVG(Distinct salary) from employees;

NOT: AVG fonksiyonuna karakter ya da tarih tipinde veriler ile işlem yapamaz.

MIN Fonksiyonu

MIN fonksiyonu sayısal türde veri içeren bir sütunda ki en küçük değeri tespit etmek için kullanılır.

MIN (sütun _adı)
Aşagıda ki sorgu da employees tablosunda ki salary sütununda ki en küçük degeri verir.

Select MIN(salary) from employees;

NOT : MIN fonksiyonu AVG ve SUM fonksiyonlarında oldugu gibi sadece sayısal veri tipinde degil tarih ve karakter veri tipinde veriler ile de işlem yapabilir.Bu fonksiyonu tarih için kullanırsak en eski ki tarihi verir. Bu fonksiyonu karakter dizesi için kullanırsak da alfabatik sıraya gore en başta ki veriyi verir.
Aşagıda ki sorgu da employees tablosunda ki hire_date sütununda ki en eski tarihi verir.

Select MIN(hire_date) from employees;

Aşagıda ki sorgu da employees tablosunda ki first_name sütununda alfabatik sıraya göre en başda ki kayıtı verir.

Select MIN(first_name) from employees;

MAX Fonksiyonu

MAX fonksiyonu sayısal türde veri içeren bir sütunda ki en büyük değeri tespit etmek için kullanılır.

MAX (sütun _adı)
Aşagıda ki sorgu da employees tablosunda ki salary sütununda ki en küçük büyük verir.

Select MAX(salary) from employees;

NOT : MAX fonksiyonu AVG ve SUM fonksiyonlarında oldugu gibi sadece sayısal veri tipinde degil tarih ve karakter veri tipinde veriler ile de işlem yapabilir.Bu fonksiyonu tarih için kullanırsak en yeni tarihi verir. Bu fonksiyonu karakter dizesi için kullanırsak da alfabatik sıraya gore en sonda ki veriyi verir.
Aşagıda ki sorgu da employees tablosunda ki hire_date sütununda ki en yeni tarihi verir.

Select MAX(hire_date) from employees;

Aşagıda ki sorgu da employees tablosunda ki first_name sütununda alfabatik sıraya göre en sonda ki kayıtı verir.

Select MAX(first_name) from employees;

Diger Grup Fonksiyonları

  • CORR Fonksiyonu : Sayı çiftlerinin korrelasyon katsayısını verir.
  • COVAR_POP : Popülasyonun degişiklik katsayısını verir.
  • COVAR_SAMP : Örnek popülasyon degerlerinin degişiklik katsayısını verir.
  • CUME_DIST : Degerlerin kümülatif dagılımını verir.
  • DENSE_RANK : Sıralı belirli bir grup içerisinde ki kayıtların rank degerini verir.
  • GROUP_ID : Her bir grubu belirten bir belirteç degeri döndürür.
  • GROUPING : Özetlenmiş kayıtlar için 1,özetlenmemiş kayıtlar için 0 degerini döndürür.
  • RANK : Sıralı belirli bir grup içerisinde kayıtların rank degerini verir.
  • REGR_AVGX : NULL olmayan (y,x) çiftleri için ortalama x degerini verir.
  • REGR_AVGY : NULL olmayan (y,x) çiftleri için ortalama y degerini verir.
  • REGR_COUNT : NULL olmayan (y,x) çiftlerinin sayısını verir.
  • STDDEV : Standart sapmayı verir.
  • STDDEV_POP : Popülasyonun standart sapmasını verir.
  • STDDEV_SAMP : Örnegin standart sapmasını verir.
  • VAR_SAMP : Örnek degişkenlik degerini verir.
  • VARIANCE : Örnek degişkenlik degerini ya da örnek büyüklügü 1 olursa 1 degerini verir.

NOT  : Örneklerimde Oracleda ki DUAL table ’ ı ve HR user ’ ı kullanıyorum.
Yararlı olması Dilegiyle…
Yazar : Mustafa Bektaş Tepe
Java && Oracle

6,414 total views, 4 views today