Referencia de funciones

LAST_VALUE

Devuelve el valor de column de la última fila del marco de la ventana.

MySQL 8.4
LAST_VALUE(column)
column
Columna o expresión cuyo valor se devuelve

Valor devuelto

Valor del tipo de column

Ejemplos

El miembro más joven de cada estado

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

El marco por defecto termina en la fila actual

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

Detalles

El marco por defecto termina en la fila actual (y en las filas con el mismo valor de ORDER BY), no al final de la partición, así que sin un marco propio la función suele devolver el valor de la fila actual. Para obtener el último valor de la partición, define el marco como ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING.

El marco define qué filas de la partición ve la función y se escribe después de ORDER BY: ROWS BETWEEN frame_start AND frame_end cuenta filas, mientras que RANGE BETWEEN frame_start AND frame_end usa los valores de ORDER BY.

LímiteQué significa
UNBOUNDED PRECEDINGLa primera fila de la partición
expr PRECEDINGexpr filas antes de la actual
CURRENT ROWLa fila actual
expr FOLLOWINGexpr filas después de la actual
UNBOUNDED FOLLOWINGLa última fila de la partición

Sin marco se aplica la regla por defecto. Si OVER tiene ORDER BY, el marco va desde el inicio de la partición hasta la fila actual, incluidas las filas con el mismo valor de ORDER BY. Sin ORDER BY, el marco es toda la partición.

Véase también

Dónde aprenderlo