LAG
Gibt den Wert aus der Zeile zurück, die offset Zeilen vor der aktuellen in der Fensterpartition liegt.
PostgreSQL 17.9
LAG(column[, offset[, default]])- [ ]optionaler Teil
- column
- Spalte oder Ausdruck, dessen Wert aus der vorherigen Zeile genommen wird
- offset
- Wie viele Zeilen zurück, standardmäßig 1; ein negativer Wert schaut nach vorn, wie LEADintegerOptional
- default
- Wert vom Typ von column, wenn es keine Zeile mit diesem Versatz gibt, standardmäßig NULLOptional
Rückgabewert
Wert vom Typ von column; default oder NULL, wenn es keine Zeile mit diesem Versatz gibt, zum Beispiel bei der ersten Zeile einer Partition
Beispiele
Eine und zwei Zeilen zurück
PostgreSQL 17.9
SELECT member_name,
birthday,
LAG(member_name) OVER (
ORDER BY birthday
) AS previous_member,
LAG(member_name, 2, 'none') OVER (
ORDER BY birthday
) AS two_rows_back
FROM FamilyMembers;Zeit seit dem vorherigen Kauf
PostgreSQL 17.9
SELECT family_member,
date,
LAG(date) OVER (
PARTITION BY family_member
ORDER BY date
) AS previous_date,
date - LAG(date) OVER (
PARTITION BY family_member
ORDER BY date
) AS since_previous
FROM Payments
ORDER BY family_member,
date;Details
Die Differenz zur vorherigen Zeile ist column - LAG(column) OVER (...): Für die erste Zeile einer Partition ist sie NULL. default muss denselben Typ wie column haben.