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

LEAD

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

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

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

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

Примеры

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

PostgreSQL 17.9
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

Сколько осталось до следующей покупки

PostgreSQL 17.9
SELECT family_member,
	date,
	LEAD(date) OVER (
		PARTITION BY family_member
		ORDER BY date
	) AS next_date,
	LEAD(date) OVER (
		PARTITION BY family_member
		ORDER BY date
	) - date AS until_next
FROM Payments
ORDER BY family_member,
	date;
family_memberdatenext_dateuntil_next
12005-02-032005-02-129 days
12005-02-122005-03-1127 days
12005-03-112005-04-2040 days
12005-04-202005-05-1323 days
12005-05-132005-06-0523 days
12005-06-052006-01-15224 days
12006-01-152006-03-1256 days
12006-03-12<NULL><NULL>
22005-03-182005-03-235 days
22005-03-232005-06-1180 days

Подробности

Разницу со следующей строкой считают как LEAD(column) OVER (...) - column: у последней строки раздела она равна NULL. Значение default должно быть того же типа, что и column.

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

Где изучить