İçindekiler
Toplama işlevleri, Veritabanlarında çok kullanışlı bir işlev türüdür, ancak çoğu aşağıdaki gibi temel ANSI-SQL işlevlerini yönetir: MIN (), MAX (), ORTA (), SUM (), COUNT ().İçinde PostgreSQL PostgreSQL'in piyasadaki en özelleştirilebilir veritabanlarından biri olduğunu söyleyebilmek için kendi toplu işlevlerimizi oluşturma olanağımız var.
Diğer türlerdeki işlevlerde olduğu gibi, kümeler PostgreSQL tarafından desteklenen diğer dillerde yazılabilir.
Bir Toplama işlevi oluşturun
Başta da belirttiğimiz gibi, toplama fonksiyonlarını SQL dahil hemen hemen her dilde yazabiliriz, bu fonksiyonlar genellikle bir veya daha fazla fonksiyondan oluşur, hesaplamayı yapmak için en az bir durum geçiş fonksiyonuna ve işlemek için isteğe bağlı fonksiyonlara sahip olmalıdırlar. durum.başlangıç ve son durum, bu fonksiyonların her biri için farklı diller bile kullanabiliriz, örneğin a fonksiyonu PL / pgSQL ve b fonksiyonu PL / Python, vb.
Bir toplama işlevinin izlemesi gereken yapıyı görelim:
CREATE AGGREGATE myagg (datatype_of_input) (SFUNC = durum_işlev_adı, STYPE = durum_türü, FINALFUNC = final_fonk_adı, INITCOND = isteğe bağlı_init_durum_değeri);
Son fonksiyonun isteğe bağlı olduğu durumlarda, ancak bunu belirtirsek, durum fonksiyonunun sonucunu girdi olarak almalı veya girmelidir. Bu durum işlevi, her zaman veri türünü ve durum işlevinin son çağrısının sonucunu girdi olarak alır; toplama işlevleri de çok sütunlu olabilir.
Kullanılabilecek ve oluşturulabilecek işlevler oldukça basit olsa da yaratıcı olabilir ve karmaşıklık taşıyan gerçek sanat eserleri yapabiliriz.
yeteneğini göstermek için bir geometrik ortalama fonksiyonu gerçekleştireceğiz. PostgreSQL daha karmaşık toplama işlevleri gerçekleştirirken.
Yapacağımız bu fonksiyon için iki fonksiyon kullanacağız, biri verileri bir günlüğe ekleyecek olan durum işlevi ve günlükleri tekrar dönüştürecek bir üstel final.
Aşağıdaki resimde durum fonksiyonunu görelim:
Bu durum geçiş işlevi, önceki durumun iki parametresini, iki öğeli tek boyutlu bir dizi ve ayrıca toplama işlemindeki bir sonraki öğe olarak alır, öğe boş veya sıfırsa, durum işlevi önceki duruma geri döner, diğerinden form, ilk elemanın logaritmik toplamı ve ikincisinin geçerli sayı olduğu bir dizi döndürür.
Aşağıdaki fonksiyonda durum fonksiyonunun toplamını alıp sayıya böleceğiz:
Tüm hesaplamayı yapan fonksiyonlarımız olduğu için, toplama fonksiyonumuzu oluşturmak için her iki parçayı da bir araya getireceğiz:
BÜYÜT
Gördüğümüz gibi, toplama işlevinin uygulanması oldukça basitti, elbette arkasındaki mantık o kadar basit değil, ancak bu şekilde desteğin ne kadar eksiksiz olduğunu görüyoruz. PostgreSQL bu seviyelerde. Diğer dilleri sorunsuz kullanabilirdik.Bununla bu öğreticiyi bitiriyoruz, zaten içindeki işlevler hakkında daha geniş bir bilgiye sahibiz. PostgreSQL ve bu şekilde veritabanımızı, uygulamalarımızı çok daha sağlam ve işlevsel hale getirecek yeni seviyelere genişletebiliriz.