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

LAST_VALUE

Возвращает значение column из последней строки рамки окна.

PostgreSQL 17.9
LAST_VALUE(column)
column
Столбец или выражение, значение которого нужно вернуть

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

Значение того же типа, что и column

Примеры

Самый младший в каждом статусе

PostgreSQL 17.9
SELECT member_name,
	status,
	birthday,
	LAST_VALUE(member_name) OVER (
		PARTITION BY status
		ORDER BY birthday ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
	) AS youngest_in_status
FROM FamilyMembers;
member_namestatusbirthdayyoungest_in_status
Lela Quinceydaughter1985-06-07Wednesday Addams
Annie Quinceydaughter1988-04-10Wednesday Addams
Wednesday Addamsdaughter2005-01-13Wednesday Addams
Headley Quinceyfather1960-05-13Ernest Forrest
Ernest Forrestfather1961-09-11Ernest Forrest
Flavia Quinceymother1963-02-16Constance Forrest
Constance Forrestmother1968-09-06Constance Forrest
Andie Quinceyson1983-06-05Andie Quincey

Рамка по умолчанию — до текущей строки

PostgreSQL 17.9
SELECT member_name,
	status,
	birthday,
	LAST_VALUE(member_name) OVER (
		PARTITION BY status
		ORDER BY birthday
	) AS last_in_frame
FROM FamilyMembers;
member_namestatusbirthdaylast_in_frame
Lela Quinceydaughter1985-06-07Lela Quincey
Annie Quinceydaughter1988-04-10Annie Quincey
Wednesday Addamsdaughter2005-01-13Wednesday Addams
Headley Quinceyfather1960-05-13Headley Quincey
Ernest Forrestfather1961-09-11Ernest Forrest
Flavia Quinceymother1963-02-16Flavia Quincey
Constance Forrestmother1968-09-06Constance Forrest
Andie Quinceyson1983-06-05Andie Quincey

Подробности

С ORDER BY рамка по умолчанию заканчивается текущей строкой (и строками с тем же значением ORDER BY), а не концом раздела, поэтому без явной рамки функция часто возвращает значение текущей строки; без ORDER BY рамка — весь раздел. Чтобы взять последнее значение всего раздела, задайте рамку ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING.

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

Где изучить