SQL Academy
Premium
Funktionsreferenz

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;
member_namebirthdaynext_membertwo_rows_ahead
Headley Quincey1960-05-13Ernest ForrestFlavia Quincey
Ernest Forrest1961-09-11Flavia QuinceyConstance Forrest
Flavia Quincey1963-02-16Constance ForrestAndie Quincey
Constance Forrest1968-09-06Andie QuinceyLela Quincey
Andie Quincey1983-06-05Lela QuinceyAnnie Quincey
Lela Quincey1985-06-07Annie QuinceyWednesday Addams
Annie Quincey1988-04-10Wednesday Addamsnone
Wednesday Addams2005-01-13<NULL>none

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;
room_idstart_dateend_datefree_days_after
12018-10-09 12:00:002018-10-12 12:00:0032
12018-11-13 12:00:002018-11-15 12:00:0044
12018-12-29 12:00:002019-01-07 12:00:0025
12019-02-01 12:00:002019-02-02 12:00:000
12019-02-02 12:00:002019-02-04 12:00:00<NULL>
22020-03-21 09:00:002020-03-23 09:00:00<NULL>
52020-03-26 10:00:002020-03-27 10:00:0048
52020-05-14 10:00:002020-05-15 10:00:00<NULL>
72019-09-13 10:00:002019-09-17 10:00:00<NULL>
82020-01-19 12:00:002020-01-21 12:00:00<NULL>

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.

Siehe auch

Wo du es lernst