Oracle Ders 26 – Group Functions – 01

Merhaba Arkadaslar,
Onumuzdeki bir kac yazi boyunca Group Function konusundan bahsedecegim. Bu yazimda su fonksiyonlari ele alacagim;

  • SUM
  • AVG
  • COUNT
  • MAX
  • MIN

SUM, AVG, COUNT, MAX , MIN fonksiyonlari aggregate(birlestirmek) functions olarak da bilinir.
Group Function , bir diger ifadesiyle Multiple-Row Function olarak adlandirilir. Her satir (row) grubu icin bir sonuc doner.
Oncelikle yeni bir tablo olusturalim ve 5 tane kayit ekleyelim.

create table group1 (
id number,
price number
);

insert into group1 values (1,100) ;
insert into group1 values (2,200) ;
insert into group1 values (3,300) ;
insert into group1 values (4,400) ;
insert into group1 values (5,500) ;
insert into group1 values (6,500) ;
insert into group1 values (7,1000) ;

SUM
SUM fonksiyonu, ilgili numerik alanin toplam degerini verir.
Genel formati su sekildedir ; SUM ( [DISTINCT|ALL] n)

select sum(price) from group1; //3000
select sum(distinct(price)) from group1;  //2500
select sum(All(price)) from group1;  //3000

Sorgularin sonuclarini inceleyecek olursak , price degerlerini birbiriyle topladik ve sonucu getirdik. Burada DISTINCT kullandigimizda 2500 oldu cunku 500 2 adet oldugu icin sadece birini isleme aldi.

AVG 
AVG fonksiyonu , ilgili numerik alanin ortalama degerini hesaplar (average).

select avg(price) from group1;  //428.571428571428571428571428571428571429
insert into group1 values (8,null);
select avg(price) from group1;  //428.571428571428571428571428571428571429

Dikkat ederseniz price alani NULL olan bir kayit daha ekledik bu durum ortalamayi degistirmedi. NULL degerler ortalamaya katilmaz.

select avg(nvl(price,0)) from group1;  //375

Isin isine NVL fonksiyonu da sokarsak sonuc degisecektir. NVL fonksiyonu , null alani 0 olarak isleme katacak bu durumda AVG fonksiyonu da isleme katacaktir.

COUNT
COUNT fonksiyonu kayit sayisini saymak icin kullanilabilir. AVG fonksiyonun da oldugu gibi NULL alanlari goz ardi edecektir.
COUNT ( * [DISTINCT |ALL] c)

select count(price) from group1;  7
select count(distinct(price)) from group1; //6
select count(*) from group1;  // 8

1.sorguda price alani null olan 1 kayit oldugu icin bu satiri goz ardi etti ve 7 sonucunu getirdi.
2.sorguda distinct kullandigimiz icin birbirinden farkli olanlari getirdi. (2 tane 500 vardi)
3.sorguda * operatorunu kullanarak null olmayan diger alanlara gore sonucu hesapladik.

MAX
MAX fonksiyonu ilgili numerik alan icin en buyuk degeri dondurur.
MAX ( [DISTINCT|ALL ] c )

select max(price) from group1;  //1000

MIN 
MIN fonksiyonu ilgili numerik alan icin en kucuk degeri dondurur.
MIN( [DISTINCT|ALL ] c )

select min(price) from group1;  //100
select max(price), min (price),avg(price),sum (price) , count(*) from group1;

Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
injavawetrust

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *