logo

SQL LAG()-Funktion

Die SQL LAG()-Funktion ist eine Fensterfunktion, die den Zugriff auf eine Zeile mit einem angegebenen physischen Offset ermöglicht, der vor der aktuellen Zeile liegt .

LAG-Funktion in SQL Server wird benutzt um Vergleichen Sie aktuelle Zeilenwerte mit Werten aus der vorherigen Zeile.



chown-Befehl

Syntax

Der LAG-Funktionssyntax Ist:

.LAG (scalar_expression [, offset [, default ]]) OVER ( [ partition_by_clause ] order_by_clause )

Java-Binärbaum

Wo :



  • Skalar_Ausdruck – Der Wert, der basierend auf dem angegebenen Offset zurückgegeben werden soll.
  • Offset – Die Anzahl der Zeilen ab der aktuellen Zeile, aus denen ein Wert ermittelt werden soll. Wenn nicht angegeben, ist der Standardwert 1.
  • Standard - Standard ist der Wert, der zurückgegeben werden soll, wenn der Offset den Bereich der Partition überschreitet. Wenn kein Standardwert angegeben ist, wird NULL zurückgegeben.
  • partition_by_clause: Eine optionale Klausel, die die Ergebnismenge in Partitionen unterteilt. Die Funktion LAG() wird auf jede Partition separat angewendet.
  • order_by_clause: Die Reihenfolge der Zeilen innerhalb jeder Partition. Dies ist obligatorisch und muss angegeben werden.

Beispiel für eine SQL LAG()-Funktion

Schauen wir uns einige Beispiele der SQL-LAG-Funktion an und verstehen, wie die LAG-Funktion in SQL Server verwendet wird.

Beispiel 1

  SELECT   Organisation, [Year], Revenue,   LAG   (Revenue, 1, 0)    OVER   (  PARTITION BY   Organisation   ORDER BY   [Year])   AS   PrevYearRevenue    FROM   Org    ORDER BY   Organisation, [Year];>

Ausgabe:

Organisation Jahr Einnahmen Umsatz im Vorjahr
ABCD-Nachrichten 2013 440000 0
ABCD-Nachrichten 2014 480000 440000
ABCD-Nachrichten 2015 490000 480000
ABCD-Nachrichten 2016 500000 490000
ABCD-Nachrichten 2017 520000 500000
ABCD-Nachrichten 2018 525000 520000
ABCD-Nachrichten 2019 540000 525000
ABCD-Nachrichten 2020 550000 540000
Z-Nachrichten 2016 720000 0
Z-Nachrichten 2017 750000 720000
Z-Nachrichten 2018 780000 750000
Z-Nachrichten 2019 880000 780000
Z-Nachrichten 2020 910000 880000

Im obigen Beispiel haben wir zwei TV-Nachrichtenkanäle, deren laufendes und vorheriges Jahreseinkommen mithilfe der Funktion LAG() in derselben Zeile dargestellt werden. Wie Sie sehen können, enthält der allererste Datensatz für jeden TV-Nachrichtensender keine Einnahmen aus dem Vorjahr und zeigt daher den Standardwert 0 an. Diese Funktion kann bei der Bereitstellung von Daten für BI-Berichte sehr nützlich sein, wenn Sie Werte vergleichen möchten in aufeinanderfolgenden Zeiträumen, z.B. Vergleiche von Jahr zu Jahr, von Quartal zu Quartal oder von Tag zu Tag.



myflixr

Beispiel 2

  SELECT   Z.*, (Z.Revenue - z.PrevYearRevenue) as YearonYearGrowth   FROM   (SELECT Organisation, [Year], Revenue,    LAG   (Revenue, 1)     OVER   (  PARTITION BY   Organisation   ORDER BY   [Year] )   AS   PrevYearRevenue     FROM   Org) Z   ORDER BY   Organisation, [Year];>

Ausgabe:

Organisation Jahr Einnahmen Umsatz im Vorjahr Jahr für Jahr Wachstum
ABCD-Nachrichten 2013 440000 NULL NULL
ABCD-Nachrichten 2014 480000 440000 40000
ABCD-Nachrichten 2015 490000 480000 10000
ABCD-Nachrichten 2016 500000 490000 10000
ABCD-Nachrichten 2017 520000 500000 20000
ABCD-Nachrichten 2018 525000 520000 5000
ABCD-Nachrichten 2019 540000 525000 15000
ABCD-Nachrichten 2020 550000 540000 10000
Z-Nachrichten 2016 720000 NULL NULL
Z-Nachrichten 2017 750000 720000 30000
Z-Nachrichten 2018 780000 750000 30000
Z-Nachrichten 2019 880000 780000 100000
Z-Nachrichten 2020 910000 880000 30000

Im obigen Beispiel können wir das jährliche Wachstum für den TV-Nachrichtensender auf ähnliche Weise berechnen. In diesem Beispiel ist außerdem zu beachten, dass wir für LAG() keinen Standardparameter angegeben haben und die Funktion LAG() daher NULL zurückgibt, falls keine vorherigen Werte vorhanden sind. Die LAG()-Funktion kann auf Datenbankebene implementiert werden und BI-Berichtslösungen wie Power BI und Tableau können die umständlichen Maßnahmen auf der Berichtsebene vermeiden.

Wichtige Punkte zur SQL LAG()-Funktion

  • Die SQL LAG()-Funktion ist eine Fensterfunktion, die Benutzern den Zugriff auf Daten aus früheren Zeilen in einem Datensatz ermöglicht.
  • Es ermöglicht Benutzern, aktuelle Zeilenwerte mit Werten aus vorherigen Zeilen zu vergleichen, insbesondere solche, die sich auf die Zeit oder bestimmte Spalten beziehen.
  • Die Funktion LAG() eignet sich hervorragend für die Analyse von Änderungen im Zeitverlauf, beispielsweise von Börsendaten, Tagestrends und Änderungen in mehreren Spalten.