SQL Academy
Premium
Funktionsreferenz

LAST_VALUE

Gibt den Wert von column aus der letzten Zeile des Fensterrahmens zurück.

PostgreSQL 17.9
LAST_VALUE(column)
column
Spalte oder Ausdruck, dessen Wert zurückgegeben wird

Rückgabewert

Wert vom Typ von column

Beispiele

Jüngstes Mitglied je Status

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

Standardrahmen endet bei der aktuellen Zeile

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

Details

Mit ORDER BY endet der Standardrahmen mit der aktuellen Zeile (und Zeilen mit demselben Wert in ORDER BY), nicht am Ende der Partition. Deshalb gibt die Funktion ohne expliziten Rahmen oft den Wert der aktuellen Zeile zurück; ohne ORDER BY ist der Rahmen die ganze Partition. Um den letzten Wert der ganzen Partition zu bekommen, setzt du den Rahmen ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING.

Siehe auch

Wo du es lernst