Funkcja opóźnienia SQL

Funkcja opóźnienia SQL

Funkcja opóźnienia w SQL umożliwia pobranie poprzedniego wiersza w określonym przesunięciu z bieżącego wiersza. Oznacza to, że możesz uzyskać dostęp do poprzedniego wiersza z bieżącego wiersza. Możesz także określić określone przesunięcie, aby uzyskać dostęp do drugiego, trzeciego itd. W poprzednim rzędzie.

Omówmy, w jaki sposób możemy użyć funkcji opóźnienia w SQL.

Składnia funkcji

Składnia funkcji jest jak pokazana:

Lag (scallar_Expression [, offset] [, domyślnie])
Over ([parition_by] order_by);

Parametry funkcji są wyrażone, jak pokazano poniżej:

  1. SCALAR_Expression - odnosi się do wartości zwracanej na podstawie określonego przesunięcia z bieżącego wiersza.
  2. Zrównoważyć - definiuje liczbę poprzednich elementów z bieżącego wiersza, z którego można uzyskać dostęp do wartości. Domyślnie SQL użyje wartości przesunięcia 1.
  3. Domyślny - ustawia wartość domyślną, jeśli wartość przesunięcia jest poza zakresem partycji. Wartość domyślna to NULL.
  4. Partycja przez - partycje danych w jedną lub więcej partycji w zależności od określonego warunku.
  5. Zamów przez - wyrażenie, aby zamówić dane w każdej partycji.

Przykład 1

Załóżmy, że mamy tabelę zawierającą dane pracowników, jak pokazano:

Aby uzyskać aktualne i poprzednie nazwiska pracowników, możemy uruchomić zapytanie, jak pokazano:

Wybierz Full_name, Lag (Full_name)
Over (partycja według kolejności kategorii według identyfikatora) jako prev_emp
Od pracowników;

Powyższy kod powinien zwrócić nazwy bieżących i poprzednich pracowników w każdej partycji.

Wyjście jest tak, jak pokazano:

Przykład 2

Jeśli w partycji nie ma poprzedniego wiersza, funkcja zwróci NULL. Jeśli chcemy ustawić wartość dla nieistniejących wierszy, możemy ustawić parametr domyślny, jak pokazano:

Wybierz Full_name, Lag (Full_name, 1, „Brakująca osoba”)
Over (partycja według kolejności kategorii według identyfikatora) jako prev_emp
Od pracowników;

Powinno to zastąpić wartości zerowe „zaginiona osoba.„Wyjście zostanie pokazane poniżej:

Przykład 3

Załóżmy, że chcemy uzyskać dostęp do dwóch wierszy z bieżącego wiersza? Możemy to zrobić, określając przesunięcie, jak pokazano:

Wybierz Full_name, Lag (Full_name, 2, „N/A”)
Over (partycja według kolejności kategorii według identyfikatora) jako prev_emp
Od pracowników;

Powyższe zapytanie powinno wrócić do dwóch wierszy i wybrać jego wartość.

Wyjście:

Wniosek

W tym artykule nauczyłeś się, jak korzystać z funkcji SQL LAG (), aby uzyskać dostęp do poprzedniego wiersza z bieżącego wiersza.

Dziękuje za przeczytanie!!