PostgreSQL - Tillagda funktioner

Innehållsförteckning
Aggregatfunktioner är en mycket användbar typ av funktioner i databaser, även om de flesta hanterar de grundläggande ANSI-SQL-funktionerna som t.ex. MIN (), MAX (), AVG (), SUM ((), COUNT ().
I PostgreSQL vi har möjlighet att skapa våra egna aggregerade funktioner så att vi kan säga att PostgreSQL är en av de mest anpassningsbara databaserna på marknaden.
Som med funktioner av andra typer kan aggregaten skrivas på andra språk som stöds av PostgreSQL.
Skapa en aggregerad funktion
Som vi nämnde i början kan vi skriva aggregerade funktioner på nästan vilket språk som helst, inklusive SQL, dessa funktioner består vanligtvis av en eller flera funktioner, de måste ha minst en tillståndsövergångsfunktion för att göra beräkningen och valfria funktioner för att hantera initialt och slutligt tillstånd kan vi till och med använda olika språk för var och en av dessa funktioner, till exempel a -funktionen i PL / pgSQL och funktionen b in PL / Python, etc.
Låt oss se strukturen som en aggregerad funktion måste följa:
 SKAPA AGGREGATE myagg (datatyp_av_input) (SFUNC = state_function_name, STYPE = state_type, FINALFUNC = final_func_name, INITCOND = optional_init_state_value); 

När den slutliga funktionen är valfri, men om vi anger den, måste den ta som inmatning eller inmatning av resultatet av tillståndsfunktionen. Denna tillståndsfunktion tar alltid som inmatning datatypen och resultatet av det senaste samtalet i tillståndsfunktionen; aggregerade funktioner kan också vara flera kolumner.
Även om de funktioner som kan användas och skapas är ganska enkla, kan vi bli kreativa och göra verkliga konstverk som bär komplexitet.
Vi kommer att utföra en geometrisk medelvärdefunktion för att visa förmågan hos PostgreSQL när du utför mer komplexa aggregerade funktioner.
För denna funktion som vi kommer att använda kommer vi att använda två funktioner, en som kommer att vara tillståndsfunktionen som lägger till data i en logg och en exponentiell final som kommer att konvertera loggarna igen.
Låt oss se i följande bild tillståndsfunktionen:

Denna tillståndsövergångsfunktion tar emot två parametrar för föregående tillstånd som en endimensionell array med två element och även nästa element i aggregeringsprocessen, om elementet är noll eller noll, kommer tillståndsfunktionen att återgå till föregående tillstånd, från ett annat form returnerar en matris där det första elementet är den logaritmiska summan och det andra är det aktuella antalet.
I följande funktion tar vi summan av tillståndsfunktionen och dividerar den med räkningen:

Eftersom vi har våra funktioner som gör alla beräkningar, kommer vi att sätta ihop båda delarna för att generera vår aggregerade funktion:

FÖRSTORA

Som vi kunde se var implementeringen av den aggregerade funktionen ganska enkel, naturligtvis är logiken bakom den inte så enkel, men på detta sätt ser vi hur komplett stödet för PostgreSQL på dessa nivåer. Vi kunde ha använt andra språk utan problem.
Med detta avslutar vi denna handledning, vi har redan en bredare kunskap om funktionerna i PostgreSQL och på så sätt kan vi utöka vår databas till nya nivåer som gör våra applikationer mycket mer robusta och funktionella.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave