Spisie treści
Funkcje agregujące są bardzo przydatnym typem funkcji w bazach danych, chociaż większość obsługuje podstawowe funkcje ANSI-SQL, takie jak MIN (), MAX (), ŚREDNIA (), SUMA (), LICZBA ().w PostgreSQL mamy możliwość tworzenia własnych funkcji agregujących, dzięki czemu możemy powiedzieć, że PostgreSQL jest jedną z najbardziej konfigurowalnych baz danych na rynku.
Podobnie jak w przypadku funkcji innych typów, agregaty mogą być pisane w innych językach obsługiwanych przez PostgreSQL.
Zbuduj funkcję agregującą
Jak wspomnieliśmy na początku, możemy napisać funkcje agregujące w prawie każdym języku, w tym w SQL, funkcje te generalnie składają się z jednej lub więcej funkcji, muszą mieć co najmniej jedną funkcję zmiany stanu, aby wykonać obliczenia i opcjonalne funkcje do obsługi stan początkowy i końcowy, możemy nawet używać różnych języków dla każdej z tych funkcji, na przykład funkcji a w PL / pgSQL i funkcja b in PL / Pythonitp.
Zobaczmy, jaką strukturę musi spełniać funkcja agregująca:
CREATE AGGREGATE myagg (typ_danych_wejścia) (SFUNC = nazwa_funkcji_stanu, STYPE = typ_stanu, FINALFUNC = nazwa_końcowej_funkcji, INITCOND = opcjonalna_wartość_stanu_stanu);
Tam, gdzie funkcja końcowa jest opcjonalna, jednak jeśli ją określimy, musi przyjąć jako dane wejściowe lub wynik funkcji stanu. Ta funkcja stanu zawsze przyjmuje jako dane wejściowe typ danych i wynik ostatniego wywołania funkcji stanu; funkcje agregujące również mogą być wielokolumnowe.
Chociaż funkcje, których można używać i tworzyć, są dość proste, możemy być kreatywni i tworzyć prawdziwe dzieła sztuki, które niosą ze sobą złożoność.
Wykonamy funkcję średniej geometrycznej, aby zademonstrować zdolność PostgreSQL podczas wykonywania bardziej złożonych funkcji agregujących.
Dla tej funkcji, którą wykonamy, użyjemy dwóch funkcji, jednej, która będzie funkcją stanu, która doda dane do dziennika, oraz wykładniczej, która ponownie przekonwertuje dzienniki.
Zobaczmy na poniższym obrazku funkcję stanu:
Ta funkcja przejścia stanu otrzymuje dwa parametry poprzedniego stanu jako jednowymiarową tablicę z dwoma elementami, a także kolejny element w procesie agregacji, jeśli element jest pusty lub zero, funkcja stanu powróci do poprzedniego stanu z innego formularz zwróci tablicę, w której pierwszy element to suma logarytmiczna, a drugi to bieżąca liczba.
W poniższej funkcji weźmiemy sumę funkcji stanu i podzielimy ją przez liczbę:
Ponieważ mamy nasze funkcje, które wykonują wszystkie obliczenia, połączymy obie części, aby wygenerować naszą funkcję agregującą:
POWIĘKSZAĆ
Jak widzieliśmy implementacja funkcji agregującej była dość prosta, oczywiście logika stojąca za nią nie jest taka prosta, jednak w ten sposób widzimy jak kompletna jest obsługa PostgreSQL na tych poziomach. Mogliśmy bez problemu posługiwać się innymi językami.Na tym kończymy ten samouczek, mamy już szerszą wiedzę na temat funkcji w PostgreSQL iw ten sposób możemy rozszerzyć naszą bazę danych na nowe poziomy, które sprawią, że nasze aplikacje będą znacznie bardziej niezawodne i funkcjonalne.