In PostgreSQL haben wir die Möglichkeit, unsere eigenen aggregierten Funktionen zu erstellen, sodass wir sagen können, dass PostgreSQL eine der am besten anpassbaren Datenbanken auf dem Markt ist.
Wie bei den Funktionen anderer Typen können Aggregate in anderen Sprachen geschrieben werden, die von PostgreSQL unterstützt werden.
Erstellen Sie eine Aggregatfunktion
Wie eingangs erwähnt, können wir die Aggregatfunktionen in nahezu jeder Sprache, einschließlich SQL, schreiben. Diese Funktionen bestehen im Allgemeinen aus einer oder mehreren Funktionen. Sie müssen mindestens eine Funktion für den Statusübergang haben, um die Berechnung durchzuführen, und optionale Funktionen zur Verwaltung des Status Anfangs- und Endzustand können wir für jede dieser Funktionen sogar verschiedene Sprachen verwenden, zum Beispiel die Funktion a in PL / pgSQL und die Funktion b in PL / Python usw.
Sehen wir uns die Struktur an, der eine Aggregatfunktion folgen muss:
CREATE AGGREGATE myagg (Datentyp_der_Eingabe) (SFUNC = state_function_name, STYPE = state_type, FINALFUNC = final_func_name, INITCOND = optional_init_state_value);
Wenn die endgültige Funktion optional ist, muss sie jedoch, wenn wir sie angeben, das Ergebnis der Statusfunktion als Eingabe oder Eingabe verwenden. Diese Statusfunktion nimmt immer die Art der Daten und das Ergebnis des letzten Aufrufs der Statusfunktion als Eingabe; Die hinzugefügten Funktionen können auch mehrspaltig sein.
Obwohl die Funktionen, die verwendet und erstellt werden können, recht einfach sind, können wir kreativ werden und echte Kunstwerke schaffen, die komplex sind.
Wir werden eine geometrische Mittelwertfunktion ausführen, um die Fähigkeit von PostgreSQL zu demonstrieren, komplexere Aggregatfunktionen auszuführen.
Für diese Funktion werden zwei Funktionen verwendet, eine Statusfunktion, mit der die Daten zu einem Protokoll hinzugefügt werden, und eine exponentielle Endung, mit der die Protokolle erneut konvertiert werden.
Sehen wir uns im folgenden Bild die Statusfunktion an:
Diese Funktion des Zustandsübergangs empfängt zwei Parameter des vorherigen Zustands als eindimensionales Array mit zwei Elementen und auch das nächste Element im Aggregationsprozess. Wenn das Element null oder null ist, kehrt die Zustandsfunktion zum vorherigen Zustand eines anderen zurück form gibt ein Array zurück, in dem das erste Element die logarithmische Summe und das zweite die aktuelle Anzahl ist.
In der folgenden Funktion nehmen wir die Summe der Zustandsfunktion und dividieren sie durch das Konto:
Da wir unsere Funktionen haben, die die gesamte Berechnung durchführen, werden wir beide Teile verbinden, um unsere hinzugefügte Funktion zu generieren:
Wie wir sehen konnten, war die Implementierung der Aggregatfunktion recht einfach, natürlich ist die Logik dahinter nicht so, dennoch sehen wir auf diese Weise, wie vollständig die PostgreSQL- Unterstützung auf diesen Ebenen sein kann. Wir hätten problemlos andere Sprachen verwenden können.
Damit beenden wir dieses Tutorial. Wir haben bereits ein breiteres Wissen über die Funktionen in PostgreSQL und können auf diese Weise unsere Datenbank auf neue Ebenen erweitern, die unsere Anwendungen viel robuster und funktionaler machen.