LEAD
Gibt den Wert aus der Zeile zurück, die offset Zeilen nach der aktuellen in der Fensterpartition liegt.
MySQL 8.1
LEAD(column[, offset[, default]]) OVER ([PARTITION BY ...] [ORDER BY ...])Parameter
- column
- Spalte oder Ausdruck, dessen Wert aus der nächsten Zeile genommen wird
- offsetINToptional
- Wie viele Zeilen vorwärts, nichtnegative ganze Zahl, standardmäßig 1
- defaultoptional
- Wert, wenn es keine Zeile mit diesem Versatz gibt, standardmäßig NULL
- PARTITION BYoptional
- Spalten, nach denen die Zeilen in Partitionen aufgeteilt werden; der Versatz überschreitet die Grenzen der Partition nicht
- ORDER BYoptional
- Reihenfolge der Zeilen, die bestimmt, welche Zeile die nächste ist; ohne sie ist die Reihenfolge nicht festgelegt
Rückgabewert
Wert vom Typ von column; default oder NULL, wenn es keine Zeile mit diesem Versatz gibt, zum Beispiel bei der letzten Zeile einer Partition
Beispiele
Versatz um eine und zwei Zeilen vorwärts
MySQL 8.1
SELECT member_name,
birthday,
LEAD(member_name) OVER (
ORDER BY birthday
) AS next_member,
LEAD(member_name, 2, 'none') OVER (
ORDER BY birthday
) AS two_rows_ahead
FROM FamilyMembers;Freie Tage bis zur nächsten Buchung
MySQL 8.1
SELECT room_id,
start_date,
end_date,
DATEDIFF(
LEAD(start_date) OVER (
PARTITION BY room_id
ORDER BY start_date
),
end_date
) AS free_days_after
FROM Reservations;Details
Mit LEAD berechnest du bequem den Abstand bis zum nächsten Ereignis: zum Beispiel, wie viele Tage ein Zimmer bis zur nächsten Buchung frei ist. default wird nur eingesetzt, wenn es keine Zeile mit diesem Versatz gibt; gibt es sie, aber sie enthält NULL, ist das Ergebnis NULL.