Inhaltsverzeichnis
Aggregatfunktionen sind ein sehr nützlicher Funktionstyp in Datenbanken, obwohl die meisten die grundlegenden ANSI-SQL-Funktionen wie z MIN (), MAX (), AVG (), SUM (), ANZAHL ().In PostgreSQL Wir haben die Möglichkeit, unsere eigenen Aggregatfunktionen zu erstellen, sodass wir sagen können, dass PostgreSQL eine der am besten anpassbaren Datenbanken auf dem Markt ist.
Wie bei Funktionen anderer Typen können die Aggregate in anderen Sprachen geschrieben werden, die von PostgreSQL unterstützt werden.
Erstellen Sie eine Aggregatfunktion
Wie wir eingangs erwähnt haben, können wir die Aggregatfunktionen in fast jeder Sprache schreiben, einschließlich SQL. Diese Funktionen bestehen im Allgemeinen aus einer oder mehreren Funktionen, sie müssen mindestens eine Zustandsübergangsfunktion für die Berechnung und optionale Funktionen für die Verarbeitung haben Zustand, Anfangs- und Endzustand, wir können für jede dieser Funktionen sogar unterschiedliche Sprachen verwenden, zum Beispiel die a-Funktion in PL / pgSQL und die Funktion b in PL / Python, etc.
Sehen wir uns die Struktur an, der eine Aggregatfunktion folgen muss:
CREATE AGGREGATE myagg (datatype_of_input) (SFUNC = state_function_name, STYPE = state_type, FINALFUNC = final_func_name, INITCOND = optional_init_state_value);
Wenn die letzte Funktion jedoch optional ist, muss sie, wenn wir sie angeben, das Ergebnis der Zustandsfunktion als Eingabe oder Eingabe annehmen. Diese Zustandsfunktion nimmt als Eingabe immer den Datentyp und das Ergebnis des letzten Aufrufs der Zustandsfunktion; Aggregatfunktionen können auch mehrspaltig sein.
Obwohl die Funktionen, die verwendet und erstellt werden können, recht einfach sind, können wir kreativ werden und wahre Kunstwerke mit Komplexität schaffen.
Wir führen eine geometrische Mittelwertfunktion durch, um die Fähigkeit von zu demonstrieren PostgreSQL bei der Ausführung komplexerer Aggregatfunktionen.
Für diese Funktion, die wir ausführen werden, verwenden wir zwei Funktionen, eine, die die Zustandsfunktion ist, die die Daten zu einem Protokoll hinzufügt, und ein exponentielles Finale, das die Protokolle erneut konvertiert.
Sehen wir uns im folgenden Bild die Zustandsfunktion an:
Diese Zustandsübergangsfunktion 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 in den vorherigen Zustand zurück, von einem anderen form gibt ein Array zurück, bei 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 teilen sie durch die Anzahl:
Da wir unsere Funktionen haben, die die gesamte Berechnung durchführen, werden wir beide Teile zusammenfügen, um unsere Aggregatfunktion zu generieren:
VERGRÖSSERN
Wie wir sehen konnten, war die Implementierung der Aggregatfunktion recht einfach, natürlich ist die Logik dahinter nicht so einfach, aber auf diese Weise sehen wir, wie vollständig die Unterstützung von PostgreSQL auf diesen Ebenen. 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 auf diese Weise können wir unsere Datenbank auf neue Ebenen erweitern, die unsere Anwendungen viel robuster und funktionaler machen.