Provided by: manpages-tr_1.0.5.1-2_all 

İ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
PostgreSQL CREATE AGGREGATE(7)