SQL Academy
Premium
Funktionsreferenz

LAST_VALUE

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

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

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

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

Der Standardrahmen endet bei der aktuellen Zeile (und den Zeilen mit demselben Wert in ORDER BY), nicht am Ende der Partition, daher gibt die Funktion ohne eigenen Rahmen oft den Wert der aktuellen Zeile zurück. Für den letzten Wert der Partition setzt du den Rahmen auf ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING.

Der Rahmen legt fest, welche Zeilen der Partition die Funktion sieht, und wird nach ORDER BY geschrieben: ROWS BETWEEN frame_start AND frame_end zählt Zeilen, während RANGE BETWEEN frame_start AND frame_end die Werte aus ORDER BY verwendet.

GrenzeBedeutung
UNBOUNDED PRECEDINGDie erste Zeile der Partition
expr PRECEDINGexpr Zeilen vor der aktuellen
CURRENT ROWDie aktuelle Zeile
expr FOLLOWINGexpr Zeilen nach der aktuellen
UNBOUNDED FOLLOWINGDie letzte Zeile der Partition

Ohne Rahmen gilt die Standardregel. Hat OVER ein ORDER BY, reicht der Rahmen vom Anfang der Partition bis zur aktuellen Zeile, einschließlich der Zeilen mit demselben Wert in ORDER BY. Ohne ORDER BY ist der Rahmen die ganze Partition.

Siehe auch

Wo du es lernst