SQL LAG -Funktion

SQL LAG -Funktion

Mit der LAG -Funktion in SQL können Sie die vorherige Zeile in einem bestimmten Offset aus der aktuellen Zeile abrufen. Dies bedeutet, dass Sie über die aktuelle Zeile auf die vorherige Zeile zugreifen können. Sie können auch einen bestimmten Offset angeben, um auf den zweiten, dritten und so in der vorherigen Zeile zuzugreifen.

Lassen Sie uns diskutieren, wie wir die LAG -Funktion in SQL verwenden können.

Funktionssyntax

Die Funktionssyntax ist wie gezeigt:

Lag (scalar_expression [, offset] [, Standard])
Over ([partition_by] order_by);

Die Funktionsparameter werden wie unten gezeigt ausgedrückt:

  1. scalar_expression - Bezieht sich auf den Rückgabewert basierend auf einem angegebenen Offset aus der aktuellen Zeile.
  2. Offset - Definiert die Anzahl früherer Elemente aus der aktuellen Zeile, aus der aus den Werten zugreifen kann. Standardmäßig verwendet SQL einen Offset -Wert von 1.
  3. Standard - Legt den Standardwert fest, wenn der Offset -Wert über den Umfang der Partition hinausgeht. Der Standardwert ist null.
  4. Partition von - Verteilt die Daten je nach angegebenem Zustand in eine oder mehrere Partitionen.
  5. Sortieren nach - Ausdruck, die Daten in jeder Partition zu bestellen.

Beispiel 1

Angenommen, wir haben eine Tabelle mit Mitarbeiterdaten wie gezeigt:

Um die aktuellen und früheren Mitarbeiternamen zu erhalten, können wir die Abfrage wie gezeigt ausführen:

Wählen Sie full_name, lag (full_name)
Over (Partition nach Kategorie Reihenfolge nach ID) als PREV_EMP
Von Mitarbeitern;

Der obige Code sollte die Namen der aktuellen und früheren Mitarbeiter in jeder Partition zurückgeben.

Der Ausgang ist wie gezeigt:

Beispiel 2

Wenn in der Partition keine vorherige Zeile vorhanden ist, gibt die Funktion NULL zurück. Wenn wir einen Wert für die nicht existierenden Zeilen festlegen möchten, können wir den Standardparameter wie gezeigt festlegen:

Wählen Sie Full_Name, LAG (full_name, 1, 'vermisste Person')
Over (Partition nach Kategorie Reihenfolge nach ID) als PREV_EMP
Von Mitarbeitern;

Dies sollte die Nullwerte durch „fehlende Person ersetzen.'Die Ausgabe wird unten angezeigt:

Beispiel 3

Angenommen, wir möchten aus der aktuellen Zeile auf zwei Zeilen zurückgreifen? Wir können dies tun, indem wir den Offset wie gezeigt angeben:

Wählen Sie full_name, lag (full_name, 2, 'n/a')
Over (Partition nach Kategorie Reihenfolge nach ID) als PREV_EMP
Von Mitarbeitern;

Die obige Abfrage sollte auf zwei Zeilen zurückreichen und ihren Wert auswählen.

Ausgang:

Abschluss

In diesem Artikel haben Sie gelernt, wie man die Funktion SQL LAG () verwendet, um aus der aktuellen Zeile auf die vorherige Zeile zuzugreifen.

Danke fürs Lesen!!