Provided by: manpages-tr_1.0.5.1-2_all bug

ISIM

       CREATE AGGREGATE - yeni bir ortak deger islevi tanimlar

KULLANIM

       CREATE AGGREGATE isim (
           BASETYPE = girdi_veri_t"ur"u,
           SFUNC = durum_i,slevi,
           STYPE = durum_veri_t"ur"u
           [ , FINALFUNC = son_i,slev ]
           [ , INITCOND = ilk_deger ]
       )

A,CIKLAMA

       CREATE  AGGREGATE  yeni  bir  ortak deger islevi tanimlar. Temel ve cok
       kullanilan ortak deger islevleri dagitima dahil edilmis ve bunlar
       http://www.postgresql.org/docs/8.0/static/functions-aggregate.html
       adresinde   aciklanmistir.   Eger  yeni  turlerin  tanimlanmasi  ya  da
       dagitimla gelmeyen bir ortak  deger  islevine  ihtiyac  olursa  istenen
       ozellikleri saglamak icin CREATE AGGREGATE kullanilabilir.

       Bir  sema  ismi  verilmisse (CREATE AGGREGATE myschema.myagg ... gibi),
       ortak deger islevi belirtilen sema icinde olusturulur.

       Bir ortak deger islevi, ismi ve girdi veri turu  ile  tanimlanir.  Eger
       iki  ortak  deger  islevi  farkli veri turleri ile calisiyorlarsa, ayni
       sema icinde ayni isimle tanimlanabilir. Ayrica, bir ortak deger  islevi
       gerek  ismi  gerekse  girdi  veri  turu  bakimindan  ayni sema icindeki
       siradan islevlerden de farkli olmalidir.

       Bir  ortak  deger  islevi  bir  ya  da  iki  siradan  islevden  olusur:
       durum_i,slevi  ile  belirtilen  bir  durum gecis islevi ve son_i,slev ile
       istege bagli olarak belirtilebilen bir son hesap islevi.  Bunlar  soyle
       kullanilir:

       durum_i,slevi( dahili_durum, sonraki-veri-"ogesi )
             ---> sonraki-dahili-durum
       son_i,slev( dahili_durum )
             ---> ortak-deger

       PostgreSQL   ortak  degerin  o  anki  dahili  durumunu  saklamak  uzere
       durum_veri_t"ur"u  ile  belirtilen  veri  turunde  bir  gecici   degisken
       olusturur.   Her   girdi  ogesinde,  yeni  bir  dahili  durum  degerini
       hesaplamak uzere durum gecis  islevi  cagrilir.  Tum  veri  islendikten
       sonra,  dondurulecek  ortak  degeri hesaplamak icin son islev cagrilir.
       Eger bir son islev yoksa, son durum degeri oldugu gibi dondurulur.

       Bir ortak deger islevine dahili durum degeri icin bir ilk deger olarak,
       bir  ilk_deger  saglanabilir.  Bu  veritabaninda text turunde bir sutun
       olarak belirtilir ve saklanir, fakat bu, durum degerinin veri turundeki
       bir  sabitin  gecerli  bir harici gosterimi olmalidir. Eger verilmezse,
       durum degeri NULL olarak ayrilir.

       Eger durum gecis islevi  argumanlarina  bagimli  olarak  bildirilmisse,
       NULL   girdilerle   cagrilamaz.   Boyle   bir   gecis  isleviyle  cumle
       calistirildiginda davranisi soyle aciklayabiliriz. NULL girdi degerleri
       yoksayilir (islev cagrilmamistir ve onceki durum degeri beklemektedir).
       Eger ilk durum degeri NULL ise, ilk NULL  olmayan  girdi  degeri  durum
       degeri  yapilir  ve  gecis  islevi  ikinci NULL olmayan girdi degeriyle
       cagrilir.  Bu,  max   gibi   ortak   deger   islevlerini   gerceklerken
       kullanislidir.  Bu  davranis sadece durum_veri_t"ur"u ile girdi_veri_t"ur"u
       ayni ise kullanilabilir. Bu veri  turleri  farkli  oldugunda,  ya  NULL
       olmayan  bir  ilk_deger  ya  da argumanlarina bagimli olmayan bir gecis
       islevi saglamalisiniz.

       Eger durum gecis islevi argumanlarina bagimli degilse, kosulsuz  olarak
       her girdi degeriyle cagrilabilecek, NULL girdi degerleriyle ve kendinin
       NULL  gecis  degerleriyle  calisacaktir.  Bu,  islev  yazarinin,  ortak
       degerin  bos degerlerle elde edilebilmesi bakimindan tam denetime sahip
       olmasiyla mumkun olur.

       Eger son islev argumanlarina bagimli olarak  bildirilmisse,  son  durum
       degeri  NULL  oldugunda  cagrilmayacak;  bunun yerine kendiliginden bir
       NULL sonuc dondurulecektir. (Suphesiz bu, argumanlarina bagimli  olarak
       islem yapabilen islevler icin normal bir davranistir.) Her durumda, bir
       son islev bir  NULL  deger  dondurecek  bir  secenege  sahip  olabilir.
       Ornegin,  avg  islevinin  son  islevi  sifir  girdi  satiri varsa, NULL
       dondurur.

PARAMETRELER

       isim   Olusturulacak  ortak  deger  islevinin  ismi  (sema   nitelemeli
              olabilir).

       girdi_veri_t"ur"u
              Bu  ortak  deger islevinin uzerinde islem yapacagi girdinin veri
              turu. Girdi degerlerinin turuyle ilgilenmeyen  bir  ortak  deger
              islevi icin (count(*) gibi), "ANY" olarak belirtilebilir.

       durum_i,slevi
              Her girdi degeri icin cagrilacak durum gecis islevinin ismi.  Bu
              normalde   iki   argumanli   bir    islevdir;    ilk    argumani
              durum_veri_t"ur"u    turunde,    ikincisi    ise   girdi_veri_t"ur"u
              turundedir. Eger bir ortak deger  islevi  girdi  veri  turu  ile
              ilgilenmiyorsa  islev  durum_veri_t"ur"u  turunde  tek bir arguman
              alabilir. Her durumda islev durum_veri_t"ur"u  turunde  bir  deger
              dondurmelidir.  Bu  islev  o anki durum degerini ve o anki girdi
              veri ogesini alip, sonraki durum degeri ile doner.

       durum_veri_t"ur"u
              Durum gecis islevinin durum degerinin veri turu.

       son_i,slev
              Tum girdi degerleri isleme sokulup,  ortak  deger  hesaplanacagi
              zaman  cagrilan  son islevin ismi. Islev durum_veri_t"ur"u turunde
              tek bir arguman almalidir. Ortak deger islevinin donus  turu  bu
              islevin   donus   turu   olarak   tanimlanir.   Eger   son_i,slev
              belirtilmemisse, son durum degeri islevin  donus  degeri  olarak
              kullanilir ve donus turu durum_veri_t"ur"u olur.

       ilk_deger
              Durum  degeri  icin  ilk  deger.  durum_veri_t"ur"u  turunde kabul
              edilebilecek bir dizge  sabit  olmalidir.  Belirtilmezse,  durum
              degeri NULL olarak ayrilir.

       CREATE  AGGREGATE deyiminin parametrelerini tam da yukaridaki sirasiyla
       yazmak sart degildir, istenen sirada yazilabilir.

"ORNEKLER

       http://www.postgresql.org/docs/8.0/static/xaggr.html adresine bakiniz.

UYUMLULUK

       CREATE AGGREGATE bir PostgreSQL  olusumudur.  SQL  standardi  kullanici
       tanimli ortak deger islevlerini desteklememektedir.

ILGILI BELGELER

       ALTER AGGREGATE [alter_aggregate(7)],
       DROP AGGREGATE [drop_aggregate(7)].

,CEVIREN

       Nilgun Belma Buguner <nilgun (at) belgeler.gen.tr>, Nisan 2005