SQL Academy
Premium
Funktionsreferenz

LAST_VALUE

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

MySQL 8.1
LAST_VALUE(column) OVER ([PARTITION BY ...] [ORDER BY ...] [frame])

Parameter

column
Spalte oder Ausdruck, dessen Wert zurückgegeben wird
PARTITION BYoptional
Spalten, nach denen die Zeilen in Partitionen aufgeteilt werden
ORDER BYoptional
Reihenfolge der Zeilen in der Partition, die bestimmt, welche Zeile die letzte ist; ohne sie ist der Rahmen die ganze Partition und die letzte Zeile beliebig
frameSchlüsselwortoptional
Fensterrahmen: ROWS oder RANGE BETWEEN start AND end; standardmäßig vom Anfang der Partition bis zur aktuellen Zeile, die ganze Partition ist ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING

Rückgabewert

Wert vom Typ von column

Beispiele

Jüngstes Mitglied je Status

MySQL 8.1
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.1
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.

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

GrenzeBedeutung
UNBOUNDED PRECEDINGDie erste Zeile der Partition
n PRECEDINGn Zeilen vor der aktuellen
CURRENT ROWDie aktuelle Zeile
n FOLLOWINGn 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