PostgreSQL - Lagt til funksjoner

Innholdsfortegnelse
Samlede funksjoner er en veldig nyttig funksjonstype i databaser, selv om de fleste håndterer de grunnleggende ANSI-SQL-funksjonene som f.eks. MIN (), MAX (), AVG (), SUM (), COUNT ().
I PostgreSQL vi har muligheten til å lage våre egne aggregerte funksjoner slik at vi kan si at PostgreSQL er en av de mest tilpassbare databasene på markedet.
Som med funksjoner av andre typer, kan aggregatene skrives på andre språk som støttes av PostgreSQL.
Bygg en samlet funksjon
Som vi nevnte i begynnelsen, kan vi skrive de samlede funksjonene på nesten alle språk, inkludert SQL, disse funksjonene er vanligvis sammensatt av en eller flere funksjoner, de må ha minst en tilstandsovergangsfunksjon for å utføre beregningen og valgfrie funksjoner for å håndtere state. initial and final state, vi kan til og med bruke forskjellige språk for hver av disse funksjonene, for eksempel a -funksjonen i PL / pgSQL og funksjonen b i PL / Python, etc.
La oss se strukturen som en samlet funksjon må følge:
 CREATE AGGREGATE myagg (datatype_of_input) (SFUNC = state_function_name, STYPE = state_type, FINALFUNC = final_func_name, INITCOND = optional_init_state_value); 

Når den endelige funksjonen er valgfri, men hvis vi spesifiserer den, må den ta som input eller input resultatet av tilstandsfunksjonen. Denne tilstandsfunksjonen tar alltid som input datatypen og resultatet av den siste samtalen til tilstandsfunksjonen; aggregerte funksjoner kan også være flerkolonne.
Selv om funksjonene som kan brukes og opprettes er ganske enkle, kan vi bli kreative og lage sanne kunstverk som bærer kompleksitet.
Vi skal utføre en geometrisk middelfunksjon for å demonstrere evnen til PostgreSQL når du utfører mer komplekse aggregerte funksjoner.
For denne funksjonen som vi skal gjøre, vil vi bruke to funksjoner, en som vil være tilstandsfunksjonen som vil legge dataene til en logg og en eksponentiell finale som vil konvertere loggene igjen.
La oss se på følgende bilde tilstandsfunksjonen:

Denne tilstandsovergangsfunksjonen mottar to parametere for forrige tilstand som en endimensjonal matrise med to elementer og også det neste elementet i aggregeringsprosessen, hvis elementet er null eller null, vil tilstandsfunksjonen gå tilbake til forrige tilstand, fra en annen form vil returnere en matrise der det første elementet er den logaritmiske summen og det andre er gjeldende telling.
I den følgende funksjonen tar vi summen av tilstandsfunksjonen og deler den med tellingen:

Siden vi har våre funksjoner som gjør hele beregningen, skal vi sette begge brikkene sammen for å generere vår samlede funksjon:

FORSTØRRE

Som vi kunne se, var implementeringen av aggregatfunksjonen ganske enkel, selvfølgelig er logikken bak den ikke så enkel, men på denne måten ser vi hvor fullstendig støtten til PostgreSQL på disse nivåene. Vi kunne ha brukt andre språk uten problemer.
Med dette fullfører vi denne opplæringen, vi har allerede en bredere kunnskap om funksjonene i PostgreSQL og på denne måten kan vi utvide databasen vår til nye nivåer som vil gjøre applikasjonene våre mye mer robuste og funksjonelle.
wave wave wave wave wave