Справочник по функциям

LEAD

Возвращает значение из строки, которая стоит на offset строк позже текущей в разделе окна.

MySQL 8.4
LEAD(column[, offset[, default]])
  • [ ]необязательная часть
column
Столбец или выражение, значение которого берётся из следующей строки
offset
На сколько строк вперёд смотреть, неотрицательное целое число, по умолчанию 1
INTНеобязательный
default
Значение, если строки со смещением нет, по умолчанию NULL
Необязательный

Возвращаемое значение

Значение того же типа, что и column; default или NULL, если строки со смещением нет, например у последней строки раздела

Примеры

Сдвиг на одну и две строки вперёд

MySQL 8.4
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

Свободные дни до следующей брони

MySQL 8.4
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>

Подробности

LEAD удобна, чтобы посчитать промежуток до следующего события: например, сколько дней комната свободна до следующего бронирования. default подставляется, только когда строки со смещением нет; если она есть, но в ней NULL, вернётся NULL.

Смотрите также

Где изучить