PostgreSQL - Fonctions ajoutées

Table des matières
Les fonctions d'agrégat sont un type de fonction très utile dans les bases de données, bien que la plupart gèrent les fonctions ANSI-SQL de base telles que MIN (), MAX (), MOY (), SOMME (), COMPTAGE ().
Dans PostgreSQL nous avons la possibilité de créer nos propres fonctions agrégées afin de pouvoir dire que PostgreSQL est l'une des bases de données les plus personnalisables du marché.
Comme pour les fonctions d'autres types, les agrégats peuvent être écrits dans d'autres langages pris en charge par PostgreSQL.
Construire une fonction d'agrégat
Comme nous l'avons mentionné au début, nous pouvons écrire les fonctions d'agrégat dans presque tous les langages, y compris SQL, ces fonctions sont généralement composées d'une ou plusieurs fonctions, elles doivent avoir au moins une fonction de transition d'état pour effectuer le calcul et des fonctions optionnelles pour gérer le état initial et final, on peut même utiliser des langages différents pour chacune de ces fonctions, par exemple la fonction a dans PL/pgSQL et la fonction b dans PL / Python, etc.
Voyons la structure qu'une fonction d'agrégat doit suivre :
 CREATE AGGREGATE myagg (datatype_of_input) (SFUNC = state_function_name, STYPE = state_type, FINALFUNC = final_func_name, INITCOND = optional_init_state_value); 

Là où la fonction finale est facultative, cependant si nous le spécifions, elle doit prendre en entrée ou en entrée le résultat de la fonction d'état. Cette fonction d'état prend toujours en entrée le type de données et le résultat du dernier appel de la fonction d'état; les fonctions d'agrégation peuvent également être multi-colonnes.
Bien que les fonctions pouvant être utilisées et créées soient assez simples, nous pouvons faire preuve de créativité et créer de véritables œuvres d'art qui comportent de la complexité.
Nous allons effectuer une fonction de moyenne géométrique pour démontrer la capacité de PostgreSQL lors de l'exécution de fonctions d'agrégation plus complexes.
Pour cette fonction que nous allons faire, nous utiliserons deux fonctions, une qui sera la fonction d'état qui ajoutera les données à un journal et une finale exponentielle qui convertira à nouveau les journaux.
Voyons dans l'image suivante la fonction d'état :

Cette fonction de transition d'état reçoit deux paramètres de l'état précédent sous la forme d'un tableau à une dimension avec deux éléments et également l'élément suivant dans le processus d'agrégation, si l'élément est nul ou nul, la fonction d'état reviendra à l'état précédent, à partir d'un autre form renverra un tableau où le premier élément est la somme logarithmique et le second est le nombre actuel.
Dans la fonction suivante, nous prendrons la somme de la fonction d'état et la diviserons par le nombre :

Puisque nous avons nos fonctions qui font tout le calcul, nous allons assembler les deux éléments pour générer notre fonction d'agrégat :

AGRANDIR

Comme nous avons pu le voir, la mise en œuvre de la fonction d'agrégat était assez simple, bien sûr la logique derrière elle n'est pas si simple, mais de cette manière, nous voyons à quel point le support de PostgreSQL à ces niveaux. Nous aurions pu utiliser d'autres langues sans problème.
Avec cela, nous terminons ce tutoriel, nous avons déjà une connaissance plus large des fonctions dans PostgreSQL et de cette façon, nous pouvons étendre notre base de données à de nouveaux niveaux qui rendront nos applications beaucoup plus robustes et fonctionnelles.
wave wave wave wave wave