İç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:
Aşağıdaki fonksiyonda durum fonksiyonunun toplamını alıp sayıya böleceğiz:
BÜYÜT
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.