PostgreSQL LAG Function () służy do uzyskania dostępu do wiersza w tabeli obecnej przed bieżącym wierszem tabeli. Jak sama nazwa wskazuje, że pozostaje w tyle za bieżącym rządem i pobiera zapis tabeli. W PostgreSQL funkcja opóźnienia jest ważna, aby porównała poprzednie wiersze z bieżącym wierszem.
Ta funkcja jest odpowiednia do wiedzy o danych wprowadzonych wcześniej, ale jest obecna w bieżącym rzędzie. Następnie możesz uzyskać dostęp do danych z przeszłości. Otwórz PSQL, a po podaniu hasła możesz teraz zastosować wszystkie polecenia w powładzie PSQL.
Składnia
Lag (wyrażenie [przesunięcie [wartość]])Przesunięcie to numer liczby całkowitych ustawiony w zapytaniu i pokazuje liczbę wierszy obecnych powyżej bieżącego wiersza. Może to być rozdzielni.
Funkcja opóźnienia jest stosowana do partycji wartości, która jest tworzona głównie w klauzuli partycji. Jednocześnie zamówienie według klauzuli jest używane do układania wierszy w określonej kolejności.
Istnieją dwie główne cechy funkcji opóźnionej tutaj, to:
Opóźnienie partycja domyślna
Mamy stół o nazwie „salon wystawowy” o szczegółach pojazdów. Tabela jest tworzona przez zapytanie „Utwórz tabelę” w PSQL i dodając dane za pomocą instrukcji „Wstaw”.
>> Wybierz * z showroom;Zastosujemy funkcję opóźnienia w tabeli. Funkcja opóźnienia zawiera w niej dwa lub więcej „Wybierz”. Ponieważ musimy wybrać wartość przed bieżącym wierszem, bieżący wiersz jest wybierany w pierwszym kroku, a następnie w wierszu.
Przykład 1
W tym przykładzie wybierzemy kolumnę z tabeli i obliczamy sumę z kolumny cenowej. Druga instrukcja Select użyje funkcji opóźnienia. Oba te stwierdzenia używają klauzuli „Zakon według” z „grupą przez” w funkcji zagregowanej wyboru. Ponieważ żaden rok nie jest podobny do drugiego, więc wszystkie wiersze zostaną wyświetlone. Nie będzie grupowania. Teraz stosujemy polecenie na tabeli:
>> z CTE AS (wybierz rok, suma (cena) cena z grupy showroom na rok Zamień do roku) Wybierz rok, cena, opóźnienie (cena, 1) nad (zamówieniem do roku) poprzedni_year_discount z CTE;Aby wydrukować wartość wiersza powyżej bieżącego wiersza, najpierw mamy dostęp do bieżącego wiersza za pośrednictwem instrukcji Select i obliczyliśmy funkcję sumy. Otrzymana wartość jest przechowywana w „CTE” do dalszego użycia w tym drugim zapytaniu. Wynikowa wartość zostanie zamówiona i zgrupowana według kolumny „roku”.
Przechodząc do drugiej instrukcji wyboru, te same kolumny w „CTE” są wybierane z tabeli. Dodatkowa kolumna jest tworzona o nazwie „poprzedni_year_discount” z opóźnieniem z 1 rzędem. A wiersze kolumny wynikowej muszą być ułożone według kolumny rok.
Z tabeli można zobaczyć, że pierwszy wiersz w nowej kolumnie jest blanowany. Ponieważ cena jest przenoszona do następnego wiersza od początku, tworząc null pierwszego rzędu.
Przykład 2
Jest inny przykład; Tutaj używamy trzech instrukcji wybranych. „CTE” i „Cye” są używane do przechowywania wartości uzyskanych z dwóch zapytań za pomocą instrukcji „Wybierz”, a ich wynikowe wartości będą używane w trzeciej instrukcji Select Instrukcja. Wyjście „CTE” działa jako wyjście dla „CTE2”. Podobnie „CTE2” będzie wejściem dla trzeciego instrukcji wyboru. Wszystkie wartości są wyświetlane w wynikowej tabeli połączonej, ponieważ jeden wynik to funkcja opóźnienia, podczas gdy druga wynikowa kolumna pokazuje różnicę między dwiema wartościami opóźnień.
Przejście w kierunku pierwszego „CTE” oblicza tę samą funkcję, co poprzedni przykład. Suma jest obliczana z kolumny „Cena”.
>> z CTE AS (Rok selekcji, suma (cena) cena z grupy showroome z zamówieniem do roku),Drugi „CTE2” jest podobny do drugiego polecenia Select, ponieważ wiemy, że funkcja opóźnienia jest stosowana na sumę kolumny „cena”. Kolumna tej sumy „poprzedni_year_discount” jest przechowywana tak, jak w CTE.
>> CTE2 AS (Wybierz rok, cena, opóźnienie (cena, 1) ponad (zamówienie według roku) poprzedni_year_discount z CTE)Trzecie oświadczenie „Wybierz” przyjmie opóźnioną sumę cen i obliczy ich różnicę. Na przykład cena w trzecim rzędzie odejmuje wartość w drugim rzędzie. Jednocześnie pierwszy rząd jest zerowy ze względu na funkcję opóźnienia.
>> Wybierz rok, cena, poprzedni_year_discount, (poprzedni_year_discount - cena) różnica od CTE;Czwarta kolumna nazywa się różnicą, ponieważ używa operatora minus do odjęcia wartości w 3. kolumnie.
Dla każdego wiersza wartość z trzeciej kolumny jest odejmowana od poprzedniego wiersza. Na przykład (3. -2nd), (4 -3rd) i tak dalej. A odjęta wartość jest zapisana przed pierwszą wartością (odejmowana od następnej wartości). Ale w szóstym wierszu w kolumnie „różnica”, zapisana jest odpowiedź, która jest uzyskiwana przez odejmowanie 1. wiersza od 2. rzędu, wartość roku 2021.
Przykład 3
Rozważ inny przykład, w którym do tabeli stosuje się tę samą koncepcję. Ale opóźnienie wynosi 2 zamiast jednego. Pojedyncza instrukcja wyboru wyświetla ceny, a nie sumę lub jakąkolwiek inną funkcję łączną.
>> Wybierz rok, cena, opóźnienie (cena, 2) ponad (zamówienie na rok) zniżka z salonu showroom;Wynikowa wartość pokazuje, że cena w kolumnie rabatowej jest przesunięta o dwa rzędy w dół. Oznacza to, że uzyskaliśmy dostęp do wierszy przed bieżącym wierszem tabeli.
Funkcja opóźnienia w partycjach
Przez pgadmin
W PGADMIN, po podaniu hasła, możesz teraz uzyskać dostęp do bazy danych i wszystkich obecnych zawartości. Przejdź do narzędzia zapytania tabel. Teraz utwórz nowe nazwy tabel „Team_members”.
>> Utwórz tabelę Team_members (Nazwa Varchar (100), ID int, rok liczba całkowitych, liczba całkowita pensja);Po utworzeniu tabeli dodaj teraz wartości do tabeli.
>> Wstaw do Team_members (nazwa, id, rok, wynagrodzenie) Wartości („Salar”, 1, 2018, 180000);Po wstawieniu wartości zastosuj teraz zapytanie.
Funkcja Lag () w tym typu porównuje roczną pensję z ostatnim rokiem każdej grupy.
>> Wybierz rok, wynagrodzenie, id, opóźnienie (wynagrodzenie, 1) nad partycją według identyfikatora (zamówienie według roku) rabat od zespołu_members;W tym przykładzie identyfikatory są grupowane zbiorowo. Partycja rozpowszechni rzędy do grupy, ponieważ widać, że wszystkie te same identyfikatory są obecne razem. A kolumna rabatowa pokazuje porównanie pensji jednego rzędu z drugim rządem, mając opóźnienie 1.
Wniosek
„Funkcja opóźnienia” służy do pobrania rekordu, który wprowadziłeś przed wybranym wierszem. Omówiono tutaj dwie główne kategorie funkcji opóźnienia. Wybierz, zamówienie są używane dodatkowo z „partycją według klauzuli”. Ta funkcja w PostgreSQL może być stosowana w tabeli, a następnie zastosować na nich różne operacje.