PostgreSQL - Funzioni aggiunte

Sommario
Le funzioni aggregate sono un tipo di funzione molto utile nei database, sebbene la maggior parte gestisca le funzioni ANSI-SQL di base come MIN (), MAX (), AVG (), SOMMA (), CONTEGGIO ().
Nel PostgreSQL abbiamo la possibilità di creare le nostre funzioni aggregate in modo che possiamo dire che PostgreSQL è uno dei database più personalizzabili sul mercato.
Come con funzioni di altro tipo, gli aggregati possono essere scritti in altri linguaggi supportati da PostgreSQL.
Costruisci una funzione di aggregazione
Come accennato all'inizio, possiamo scrivere le funzioni aggregate in quasi tutti i linguaggi, incluso SQL, queste funzioni sono generalmente composte da una o più funzioni, devono avere almeno una funzione di transizione di stato per eseguire il calcolo e funzioni opzionali per gestire il stato iniziale e finale, possiamo anche usare linguaggi diversi per ciascuna di queste funzioni, ad esempio la funzione a in PL / pgSQL e la funzione b in PL / Python, eccetera.
Vediamo la struttura che deve seguire una funzione aggregata:
 CREATE AGGREGATE myagg (datatype_of_input) (SFUNC = state_function_name, STYPE = state_type, FINALFUNC = final_func_name, INITCOND = optional_init_state_value); 

Laddove la funzione finale è facoltativa, invece, se la specifichiamo, deve prendere come input o come input il risultato della funzione di stato. Questa funzione di stato prende sempre come input il tipo di dato e il risultato dell'ultima chiamata della funzione di stato; anche le funzioni aggregate possono essere multi-colonna.
Sebbene le funzioni che possono essere utilizzate e create siano abbastanza semplici, possiamo essere creativi e realizzare vere opere d'arte che portano complessità.
Eseguiamo una funzione di media geometrica per dimostrare la capacità di PostgreSQL quando si eseguono funzioni aggregate più complesse.
Per questa funzione che faremo utilizzeremo due funzioni, una che sarà la funzione di stato che aggiungerà i dati a un log e una finale esponenziale che convertirà nuovamente i log.
Vediamo nell'immagine seguente la funzione di stato:

Questa funzione di transizione di stato riceve due parametri dello stato precedente come un array unidimensionale con due elementi e anche l'elemento successivo nel processo di aggregazione, se l'elemento è nullo o zero, la funzione di stato tornerà allo stato precedente, da un altro form restituirà un array in cui il primo elemento è la somma logaritmica e il secondo è il conteggio corrente.
Nella seguente funzione prenderemo la somma della funzione di stato e la divideremo per il conteggio:

Poiché abbiamo le nostre funzioni che fanno tutto il calcolo, metteremo insieme entrambi i pezzi per generare la nostra funzione aggregata:

INGRANDIRE

Come abbiamo potuto vedere, l'implementazione della funzione aggregata è stata abbastanza semplice, ovviamente la logica alla base non è così semplice, tuttavia in questo modo vediamo quanto sia completo il supporto di PostgreSQL a questi livelli. Avremmo potuto usare altre lingue senza problemi.
Con questo finiamo questo tutorial, abbiamo già una conoscenza più ampia delle funzioni in PostgreSQL e in questo modo possiamo estendere il nostro database a nuovi livelli che renderanno le nostre applicazioni molto più robuste e funzionali.
wave wave wave wave wave