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

İSİM

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

KULLANIM

       CREATE AGGREGATE isim (
           BASETYPE = girdi_veri_türü,
           SFUNC = durum_işlevi,
           STYPE = durum_veri_türü
           [ , FINALFUNC = son_işlev ]
           [ , INITCOND = ilk_değer ]
       )

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_işlevi ile  belirtilen
       bir  durum  geçiş işlevi ve son_işlev ile isteğe bağlı olarak belirtilebilen bir son hesap
       işlevi. Bunlar şöyle kullanılır:

       durum_işlevi( dahili_durum, sonraki-veri-öğesi )
             ---> sonraki-dahili-durum
       son_işlev( dahili_durum )
             ---> ortak-değer

       PostgreSQL ortak değerin  o  anki  dahili  durumunu  saklamak  üzere  durum_veri_türü  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_değer
       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_türü ile
       girdi_veri_türü aynı ise kullanılabilir. Bu veri türleri farklı olduğunda, ya NULL olmayan
       bir ilk_değer 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_türü
              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_işlevi
              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_türü  türünde,  ikincisi   ise
              girdi_veri_türü  türündedir.  Eğer  bir  ortak  değer  işlevi  girdi  veri türü ile
              ilgilenmiyorsa işlev durum_veri_türü türünde tek bir argüman alabilir. Her  durumda
              işlev  durum_veri_türü  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_türü
              Durum geçiş işlevinin durum değerinin veri türü.

       son_işlev
              Tüm girdi değerleri işleme sokulup, ortak değer hesaplanacağı  zaman  çağrılan  son
              işlevin  ismi. İşlev durum_veri_türü 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_işlev
              belirtilmemişse,  son  durum değeri işlevin dönüş değeri olarak kullanılır ve dönüş
              türü durum_veri_türü olur.

       ilk_değer
              Durum değeri için ilk değer. durum_veri_türü 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