PostgreSQL - Funcții adăugate

Cuprins
Funcțiile agregate sunt un tip de funcție foarte util în bazele de date, deși majoritatea se ocupă de funcțiile de bază ANSI-SQL, cum ar fi MIN (), MAX (), AVG (), SUM (), COUNT ().
În PostgreSQL avem posibilitatea de a crea propriile noastre funcții agregate, astfel încât să putem spune că PostgreSQL este una dintre cele mai personalizabile baze de date de pe piață.
Ca și în cazul funcțiilor de alte tipuri, agregatele pot fi scrise în alte limbi acceptate de PostgreSQL.
Construiți o funcție agregată
După cum am menționat la început, putem scrie funcțiile agregate în aproape orice limbaj, inclusiv SQL, aceste funcții sunt în general compuse din una sau mai multe funcții, acestea trebuie să aibă cel puțin o funcție de tranziție de stare pentru a face calculul și funcții opționale pentru a gestiona starea inițială și finală, putem folosi chiar și limbi diferite pentru fiecare dintre aceste funcții, de exemplu funcția a în PL / pgSQL și funcția b in PL / Python, etc.
Să vedem structura pe care trebuie să o urmeze o funcție agregată:
 CREATE AGGREGATE myagg (datatype_of_input) (SFUNC = state_function_name, STYPE = state_type, FINALFUNC = final_func_name, INITCOND = optional_init_state_value); 

În cazul în care funcția finală este opțională, totuși, dacă o specificăm, aceasta trebuie să ia ca intrare sau intrare rezultatul funcției de stare. Această funcție de stare ia întotdeauna ca intrare tipul de date și rezultatul ultimului apel al funcției de stare; funcțiile agregate pot fi, de asemenea, cu mai multe coloane.
Deși funcțiile care pot fi folosite și create sunt destul de simple, putem deveni creativi și putem crea adevărate opere de artă care poartă complexitate.
Vom îndeplini o funcție medie geometrică pentru a demonstra capacitatea de PostgreSQL când se execută funcții de agregare mai complexe.
Pentru această funcție pe care o vom face vom folosi două funcții, una care va fi funcția de stare care va adăuga datele într-un jurnal și o finală exponențială care va converti jurnalele din nou.
Să vedem în următoarea imagine funcția de stare:

Această funcție de tranziție de stare primește doi parametri ai stării anterioare ca o matrice unidimensională cu două elemente și, de asemenea, următorul element în procesul de agregare, dacă elementul este nul sau zero, funcția de stare va reveni la starea anterioară, de la o altă form va returna o matrice în care primul element este suma logaritmică și al doilea este numărul curent.
În următoarea funcție vom lua suma funcției de stare și o vom împărți la număr:

Deoarece avem funcțiile noastre care fac tot calculul, vom pune ambele piese împreună pentru a genera funcția noastră agregată:

MARI

După cum am putut vedea, implementarea funcției agregate a fost destul de simplă, desigur logica din spatele ei nu este atât de simplă, totuși în acest fel vedem cât de complet este suportul pentru PostgreSQL la aceste niveluri. Am fi putut folosi alte limbi fără probleme.
Cu aceasta încheiem acest tutorial, avem deja o cunoaștere mai largă despre funcțiile din PostgreSQL și în acest fel ne putem extinde baza de date la noi niveluri care vor face aplicațiile noastre mult mai robuste și funcționale.
wave wave wave wave wave