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

İSİM

       CREATE AGGREGATE - yeni bir ortak değer işlevi tanımlar

KULLANIM

       CREATE AGGREGATE isim (
           BASETYPE = girdi_veri_tr,
           SFUNC = durum_ilevi,
           STYPE = durum_veri_tr
           [ , FINALFUNC = son_ilev ]
           [ , INITCOND = ilk_deer ]
       )

AÇIKLAMA

       CREATE  AGGREGATE  yeni  bir  ortak değer işlevi tanımlar. Temel ve çok
       kullanılan ortak değer işlevleri dağıtıma dahil edilmiş ve bunlar
       http://www.postgresql.org/docs/8.0/static/functions-aggregate.html
       adresinde   açıklanmıştır.   Eğer  yeni  türlerin  tanımlanması  ya  da
       dağıtımla gelmeyen bir ortak  değer  işlevine  ihtiyaç  olursa  istenen
       özellikleri sağlamak için CREATE AGGREGATE kullanılabilir.

       Bir  şema  ismi  verilmişse (CREATE AGGREGATE myschema.myagg ... gibi),
       ortak değer işlevi belirtilen şema içinde oluşturulur.

       Bir ortak değer işlevi, ismi ve girdi veri türü  ile  tanımlanır.  Eğer
       iki  ortak  değer  işlevi  farklı veri türleri ile çalışıyorlarsa, aynı
       şema içinde aynı isimle tanımlanabilir. Ayrıca, bir ortak değer  işlevi
       gerek  ismi  gerekse  girdi  veri  türü  bakımından  aynı şema içindeki
       sıradan işlevlerden de farklı olmalıdır.

       Bir  ortak  değer  işlevi  bir  ya  da  iki  sıradan  işlevden  oluşur:
       durum_ilevi  ile  belirtilen  bir  durum geçiş işlevi ve son_ilev ile
       isteğe bağlı olarak belirtilebilen bir son hesap işlevi.  Bunlar  şöyle
       kullanılır:

       durum_ilevi( dahili_durum, sonraki-veri-esi )
             ---> sonraki-dahili-durum
       son_ilev( dahili_durum )
             ---> ortak-değer

       PostgreSQL   ortak  değerin  o  anki  dahili  durumunu  saklamak  üzere
       durum_veri_tr  ile  belirtilen  veri  türünde  bir  geçici   değişken
       oluşturur.   Her   girdi  öğesinde,  yeni  bir  dahili  durum  değerini
       hesaplamak üzere durum geçiş  işlevi  çağrılır.  Tüm  veri  işlendikten
       sonra,  döndürülecek  ortak  değeri hesaplamak için son işlev çağrılır.
       Eğer bir son işlev yoksa, son durum değeri olduğu gibi döndürülür.

       Bir ortak değer işlevine dahili durum değeri için bir ilk değer olarak,
       bir  ilk_deer  sağlanabilir.  Bu  veritabanında text türünde bir sütun
       olarak belirtilir ve saklanır, fakat bu, durum değerinin veri türündeki
       bir  sabitin  geçerli  bir harici gösterimi olmalıdır. Eğer verilmezse,
       durum değeri NULL olarak ayrılır.

       Eğer durum geçiş işlevi  argümanlarına  bağımlı  olarak  bildirilmişse,
       NULL   girdilerle   çağrılamaz.   Böyle   bir   geçiş  işleviyle  cümle
       çalıştırıldığında davranışı şöyle açıklayabiliriz. NULL girdi değerleri
       yoksayılır (işlev çağrılmamıştır ve önceki durum değeri beklemektedir).
       Eğer ilk durum değeri NULL ise, ilk NULL  olmayan  girdi  değeri  durum
       değeri  yapılır  ve  geçiş  işlevi  ikinci NULL olmayan girdi değeriyle
       çağrılır.  Bu,  max   gibi   ortak   değer   işlevlerini   gerçeklerken
       kullanışlıdır.  Bu  davranış sadece durum_veri_tr ile girdi_veri_tr
       aynı ise kullanılabilir. Bu veri  türleri  farklı  olduğunda,  ya  NULL
       olmayan  bir  ilk_deer  ya  da argümanlarına bağımlı olmayan bir geçiş
       işlevi sağlamalısınız.

       Eğer durum geçiş işlevi argümanlarına bağımlı değilse, koşulsuz  olarak
       her girdi değeriyle çağrılabilecek, NULL girdi değerleriyle ve kendinin
       NULL  geçiş  değerleriyle  çalışacaktır.  Bu,  işlev  yazarının,  ortak
       değerin  boş değerlerle elde edilebilmesi bakımından tam denetime sahip
       olmasıyla mümkün olur.

       Eğer son işlev argümanlarına bağımlı olarak  bildirilmişse,  son  durum
       değeri  NULL  olduğunda  çağrılmayacak;  bunun yerine kendiliğinden bir
       NULL sonuç döndürülecektir. (Şüphesiz bu, argümanlarına bağımlı  olarak
       işlem yapabilen işlevler için normal bir davranıştır.) Her durumda, bir
       son işlev bir  NULL  değer  döndürecek  bir  seçeneğe  sahip  olabilir.
       Örneğin,  avg  işlevinin  son  işlevi  sıfır  girdi  satırı varsa, NULL
       döndürür.

PARAMETRELER

       isim   Oluşturulacak  ortak  değer  işlevinin  ismi  (şema   nitelemeli
              olabilir).

       girdi_veri_tr
              Bu  ortak  değer işlevinin üzerinde işlem yapacağı girdinin veri
              türü. Girdi değerlerinin türüyle ilgilenmeyen  bir  ortak  değer
              işlevi için (count(*) gibi), "ANY" olarak belirtilebilir.

       durum_ilevi
              Her girdi değeri için çağrılacak durum geçiş işlevinin ismi.  Bu
              normalde   iki   argümanlı   bir    işlevdir;    ilk    argümanı
              durum_veri_tr    türünde,    ikincisi    ise   girdi_veri_tr
              türündedir. Eğer bir ortak değer  işlevi  girdi  veri  türü  ile
              ilgilenmiyorsa  işlev  durum_veri_tr  türünde  tek bir argüman
              alabilir. Her durumda işlev durum_veri_tr  türünde  bir  değer
              döndürmelidir.  Bu  işlev  o anki durum değerini ve o anki girdi
              veri öğesini alıp, sonraki durum değeri ile döner.

       durum_veri_tr
              Durum geçiş işlevinin durum değerinin veri türü.

       son_ilev
              Tüm girdi değerleri işleme sokulup,  ortak  değer  hesaplanacağı
              zaman  çağrılan  son işlevin ismi. İşlev durum_veri_tr türünde
              tek bir argüman almalıdır. Ortak değer işlevinin dönüş  türü  bu
              işlevin   dönüş   türü   olarak   tanımlanır.   Eğer   son_ilev
              belirtilmemişse, son durum değeri işlevin  dönüş  değeri  olarak
              kullanılır ve dönüş türü durum_veri_tr olur.

       ilk_deer
              Durum  değeri  için  ilk  değer.  durum_veri_tr  türünde kabul
              edilebilecek bir dizge  sabit  olmalıdır.  Belirtilmezse,  durum
              değeri NULL olarak ayrılır.

       CREATE  AGGREGATE deyiminin parametrelerini tam da yukarıdaki sırasıyla
       yazmak şart değildir, istenen sırada yazılabilir.

ÖRNEKLER

       http://www.postgresql.org/docs/8.0/static/xaggr.html adresine  bakınız.

UYUMLULUK

       CREATE  AGGREGATE  bir  PostgreSQL  oluşumudur. SQL standardı kullanıcı
       tanımlı ortak değer işlevlerini desteklememektedir.

İLGİLİ BELGELER

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

ÇEVİREN

       Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>, Nisan 2005