W tym samouczku skupimy się na użyciu jednej z funkcji MySQL: lag (). Jest to funkcja okna, która umożliwia dostęp i pobieranie wartości poprzednich wierszy z bieżącego wiersza w tym samym zestawie wyników.
Podstawowa składnia
Ogólna składnia do korzystania z funkcji MySQL lag () to:
LAG (wyrażenie, wartości offsetValue, DefaultVar)Poświęćmy chwilę na wyjaśnienie niektórych parametrów w składni funkcji LAG ().
Są następujące:
Wyrażenie: Jest to wartość zwrócona przez funkcję z wiersza, która prowadzi bieżący wiersz według określonej wartości przesunięcia.
WVIRUE OFFSETEM: Ta wartość reprezentuje liczbę wierszy poprzedzających bieżący wiersz, z którego można uzyskać wartość. Ta wartość musi być 0 lub wartość wyższa niż 0.
NOTATKA: Wartość 0 reprezentuje bieżący wiersz.
DefaultVar: Ta wartość jest zwracana jako wartość domyślna przez funkcję, jeśli nie istnieje poprzedni wiersz. Jeśli wartość domyślna jest niezdefiniowana w parametrze funkcji i nie istnieje poprzedni wiersz, funkcja zwraca wartość zerową.
Partycja:: Partycja według klauzuli dzieli wiersze w logicznym zestawie partycji. Funkcja opóźnienia jest następnie stosowana do podzielonych partycji.
ZAMÓW PRZEZ: Jak zwykle ta wartość określa kolejność wierszy w dostępnych partycjach.
Przykład przypadków użycia
Spójrzmy na przykładowe przypadki użycia funkcji LAG (), aby zrozumieć, jak to działa. Zacznij od utworzenia przykładowej bazy danych o nazwie STARK_DB;
Z upuść bazę danych, jeśli istnieje próbka_database;Teraz, gdy mamy przykładową bazę danych do pracy, możemy kontynuować i zilustrować, jak pracować z funkcją opóźnienia MySQL.
Przykład 1: Funkcja opóźnienia bez wartości domyślnej
Rozważ poniższy przykład, który stosuje funkcję opóźnienia w rejestru_date z wartością przesunięcia 1.
Po wykonaniu powyższego zapytania otrzymujemy nową kolumnę poprzednią_date, która utrzymuje poprzednią wartość wiersza określoną z wartością przesunięcia 1. Ponieważ w pierwszym rzędzie nie ma wcześniejszej wartości, wartość jest null.
Uwaga: Możesz określić wartość domyślną, jeśli wiersz nie ma poprzedniej wartości.
Wyjście jest jak pokazano poniżej:
Przykład 2: Funkcja opóźnienia o wartości domyślnej
Możesz także określić wartość domyślną dla wiersza, w której poprzednia wartość nie istnieje. W naszym przykładzie ustawimy wartość domyślną w bieżącym dniu.
Uwaga: W tym przykładzie ustawym również wartość przesunięcia jako 2 zamiast 1.
Rozważ pytanie poniżej:
Wybierz *, lag (Enteroll_Date, 2, curdate ()) Over (rzędu według id ASC) jako poprzedni_date z próbki_database.użytkownicy;Po wykonaniu powyższego zapytania otrzymamy wartości z wartością przesunięcia wynoszącą dwie i bieżącą datą jako wartości domyślnych dla wartości zerowych.
Wyjście jest jak pokazano poniżej:
Przykład 3: Funkcja opóźnienia z partycją przez
Możemy użyć funkcji lag () z partycją według klauzuli. Ta klauzula najpierw grupuje dane na różne logiczne podzbiory, a następnie stosuje funkcję opóźnienia do partycji.
Przed kontynuowaniem zobaczmy dane w tabeli użytkownika. Rozważ następujące zapytanie:
Wstaw do użytkowników (ID, Nazwa, wynik, Everoll_Date)Teraz, gdy mamy tabelę z 10 wartościami, możemy podzielić dane według wyniku, a następnie zastosować funkcję opóźnienia.
Powyższa operacja jest zilustrowana w pytaniu poniżej:
Wybierz *, lag (Everoll_Date, 1, curdate ()) Over (partycja według kolejności wyniku według id ASC) jako poprzedni_date z próbki_database.użytkownicy;W powyższym zapytaniu zaczynamy od partycjonowania danych na podstawie wyniku, a następnie zastosowania funkcji opóźnienia z wartością przesunięcia 1. Ustawiamy również wartość domyślną jako bieżącą datę. Wynik wyjściowy jest jak pokazano poniżej:
Uwaga: możesz również zauważyć, że pierwszy wiersz każdej partycji zawiera bieżącą datę, co oznacza, że nie ma wcześniejszej wartości w ustawionym wierszu.
Wniosek
W tym samouczku omówiono, jak działa funkcja lag (), aby uzyskać wartości poprzednich wierszy w bieżącym rzędzie.
Przypomnę:
Dziękuję za przeczytanie.