Sadržaj
Zbirne funkcije vrlo su korisna vrsta funkcija u bazama podataka, iako većina rukuje osnovnim ANSI-SQL funkcijama, kao što su MIN (), MAX (), AVG (), SUM (), COUNT ().U PostgreSQL imamo mogućnost stvaranja vlastitih zbirnih funkcija tako da možemo reći da je PostgreSQL jedna od najprilagodljivijih baza podataka na tržištu.
Kao i kod funkcija drugih vrsta, agregati se mogu pisati na drugim jezicima koje podržava PostgreSQL.
Izgradite funkciju agregata
Kao što smo spomenuli na početku, možemo zapisati zbirne funkcije na gotovo bilo kojem jeziku, uključujući SQL, te se funkcije općenito sastoje od jedne ili više funkcija, moraju imati barem jednu funkciju prijelaza stanja za obavljanje izračunavanja i izborne funkcije za rukovanje početno i završno stanje, čak možemo koristiti različite jezike za svaku od ovih funkcija, na primjer funkciju u PL / pgSQL a funkcija b in PL / Pythonitd.
Pogledajmo strukturu koju agregatna funkcija mora slijediti:
CREATE AGGREGATE myagg (data_of_input) (SFUNC = ime_funkcije_stanje, STIP = vrsta_stanja, FINALFUNC = konačno_naziv_funkcije, INITCOND = opcionalno_init_vrijednost_stata);
Tamo gdje je konačna funkcija opcionalna, međutim ako je navedemo, ona mora uzeti kao ulaz ili ulaz rezultat funkcije stanja. Ova funkcija stanja uvijek uzima kao ulaz tip podataka i rezultat posljednjeg poziva funkcije stanja; zbirne funkcije mogu biti i više stupaca.
Iako su funkcije koje se mogu koristiti i stvarati prilično jednostavne, možemo postati kreativni i napraviti prava umjetnička djela koja nose složenost.
Izvest ćemo geometrijsku srednju funkciju kako bismo pokazali sposobnost PostgreSQL pri obavljanju složenijih skupnih funkcija.
Za ovu funkciju koju ćemo raditi koristit ćemo dvije funkcije, jednu koja će biti funkcija stanja koja će dodati podatke u dnevnik i eksponencijalnu završnicu koja će ponovno pretvoriti zapisnike.
Pogledajmo na sljedećoj slici funkciju stanja:
Ova prijelazna funkcija stanja prima dva parametra prethodnog stanja kao jednodimenzionalni niz s dva elementa, a također i sljedeći element u procesu agregacije, ako je element nula ili nula, funkcija stanja će se vratiti u prethodno stanje, iz drugog form će vratiti niz u kojem je prvi element logaritamski zbroj, a drugi trenutni broj.
U sljedećoj funkciji ćemo uzeti zbroj funkcije stanja i podijeliti je s brojenjem:
Budući da imamo naše funkcije koje vrše sve izračune, sastavit ćemo oba dijela kako bismo generirali našu skupnu funkciju:
POVEĆAJTE
Kao što smo mogli vidjeti, implementacija agregatne funkcije bila je prilično jednostavna, naravno da logika iza nje nije tako jednostavna, međutim na ovaj način vidimo koliko je potpuna podrška PostgreSQL na ovim razinama. Mogli smo koristiti druge jezike bez problema.Ovim smo završili ovaj vodič, već imamo šire znanje o funkcijama u PostgreSQL i na taj način možemo proširiti našu bazu podataka na nove razine koje će naše aplikacije učiniti robusnijim i funkcionalnijim.