Indholdsfortegnelse
Samlede funktioner er en meget nyttig funktionstype i databaser, selvom de fleste håndterer de grundlæggende ANSI-SQL-funktioner som f.eks. MIN (), MAX (), AVG (), SUM (), COUNT ().I PostgreSQL vi har mulighed for at oprette vores egne aggregerede funktioner, så vi kan sige, at PostgreSQL er en af de mest tilpassede databaser på markedet.
Som med funktioner af andre typer kan aggregaterne skrives på andre sprog, der understøttes af PostgreSQL.
Byg en samlet funktion
Som vi nævnte i begyndelsen, kan vi skrive de samlede funktioner på næsten ethvert sprog, inklusive SQL, disse funktioner er generelt sammensat af en eller flere funktioner, de skal have mindst en tilstandsovergangsfunktion for at udføre beregningen og valgfrie funktioner til at håndtere tilstand.indledende og sidste tilstand, kan vi endda bruge forskellige sprog til hver af disse funktioner, for eksempel a -funktionen i PL / pgSQL og funktionen b i PL / Python, etc.
Lad os se strukturen, som en samlet funktion skal følge:
CREATE AGGREGATE myagg (datatype_of_input) (SFUNC = state_function_name, STYPE = state_type, FINALFUNC = final_func_name, INITCOND = optional_init_state_value);
Hvor den endelige funktion er valgfri, men hvis vi angiver den, skal den tage som input eller input resultatet af tilstandsfunktionen. Denne tilstandsfunktion tager altid datatypen og resultatet af det sidste opkald fra tilstandsfunktionen som input; samlede funktioner kan også være multi-kolonne.
Selvom de funktioner, der kan bruges og oprettes, er ganske enkle, kan vi blive kreative og lave ægte kunstværker, der bærer kompleksitet.
Vi skal udføre en geometrisk middelfunktion for at demonstrere evnen til PostgreSQL ved udførelse af mere komplekse aggregerede funktioner.
Til denne funktion, vi vil udføre, vil vi bruge to funktioner, en der vil være tilstandsfunktionen, der tilføjer dataene til en log og en eksponentiel final, der konverterer logfilerne igen.
Lad os se på følgende billede tilstandsfunktionen:
Denne tilstandsovergangsfunktion modtager to parametre for den tidligere tilstand som et endimensionelt array med to elementer og også det næste element i aggregeringsprocessen, hvis elementet er nul eller nul, vender tilstandsfunktionen tilbage til den forrige tilstand, fra en anden form returnerer en matrix, hvor det første element er den logaritmiske sum, og det andet er den aktuelle tælling.
I den følgende funktion tager vi summen af tilstandsfunktionen og dividerer den med tællingen:
Da vi har vores funktioner, der gør hele beregningen, vil vi sammensætte begge stykker for at generere vores samlede funktion:
FORSTØRRE
Som vi kunne se, var implementeringen af den samlede funktion ganske enkel, selvfølgelig er logikken bag den ikke så enkel, men på denne måde ser vi, hvor fuldstændig understøttelsen af PostgreSQL på disse niveauer. Vi kunne have brugt andre sprog uden problemer.Med dette afslutter vi denne vejledning, vi har allerede en bredere viden om funktionerne i PostgreSQL og på denne måde kan vi udvide vores database til nye niveauer, der vil gøre vores applikationer meget mere robuste og funktionelle.