Diese Seite wurde mit KI-Unterstützung aus dem Englischen übersetzt. Bei Abweichungen ist die englische Version maßgeblich.
LAG
Gibt das Ergebnis der Auswertung eines Ausdrucks für eine vorherige Zeile in der Partition zurück.
Die erste Form von LAG() gibt das Ergebnis der Auswertung des Ausdrucks für die vorherige Zeile in der Partition zurück. Gibt es keine vorherige Zeile (weil die aktuelle Zeile die erste ist), wird NULL zurückgegeben.
Wird das Argument offset angegeben, muss es eine nicht negative Ganzzahl sein. Der zurückgegebene Wert ist das Ergebnis der Auswertung des Ausdrucks für die Zeile, die offset Zeilen vor der aktuellen Zeile innerhalb der Partition liegt. Ist offset 0, wird der Ausdruck für die aktuelle Zeile ausgewertet. Gibt es keine Zeile offset Zeilen vor der aktuellen Zeile, wird NULL zurückgegeben.
Wird zusätzlich ein Standardwert angegeben, wird dieser anstelle von NULL zurückgegeben, wenn die durch offset bestimmte Zeile nicht existiert.
Syntax
SELECT LAG(expr) OVER ([PARTITION BY column] ORDER BY column) FROM <multipartIdentifier>;
SELECT LAG(expr, offset) OVER ([PARTITION BY column] ORDER BY column) FROM <multipartIdentifier>;
SELECT LAG(expr, offset, default) OVER ([PARTITION BY column] ORDER BY column) FROM <multipartIdentifier>;
Argumente
expr Der Ausdruck, der für die vorherige Zeile ausgewertet wird.
offset Optional. Eine nicht negative Ganzzahl, die angibt, um wie viele Zeilen zurückgeblickt wird. Standardwert ist 1.
default
Optional. Der Wert, der zurückgegeben wird, wenn die durch offset bestimmte Zeile nicht existiert. Standardwert ist NULL.
PARTITION BY column
Optional. Teilt die Ergebnismenge in Partitionen auf. Die Funktion LAG wird innerhalb jeder Partition separat angewendet.
ORDER BY column Legt die Reihenfolge fest, in der die Zeilen verarbeitet werden.
Rückgabewert(e)
Gibt den Wert des Ausdrucks zurück, der für die angegebene vorherige Zeile ausgewertet wird, oder NULL (bzw. den Standardwert), wenn keine solche Zeile existiert.
Beispiele
Jedes Release mit dem vorherigen Release vergleichen
-- Compare each release to previous and next release dates
SELECT
tag_name,
name,
published_at,
LAG(tag_name, 1) OVER (ORDER BY published_at) as previous_release,
LAG(published_at, 1) OVER (ORDER BY published_at) as previous_release_date,
julianday(published_at) - julianday(LAG(published_at, 1) OVER (ORDER BY published_at)) as days_since_last_release
FROM github.repos.releases
WHERE owner = 'stackql'
AND repo = 'stackql'
ORDER BY published_at;
Abstände zwischen der Erstellung von Issues analysieren
-- Analyze gaps between issue creation
SELECT
number,
title,
created_at,
LAG(created_at, 1) OVER (ORDER BY created_at) as prev_issue_date,
julianday(created_at) - julianday(LAG(created_at, 1) OVER (ORDER BY created_at)) as days_since_prev_issue
FROM github.issues.issues
WHERE owner = 'stackql'
AND repo = 'stackql'
ORDER BY created_at;
Weitere Informationen finden Sie unter https://sqlite.org/windowfunctions.html#built-in_window_functions.