Referencia de funciones

FIRST_VALUE

Devuelve el valor de column de la primera fila del marco de la ventana.

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

Valor devuelto

Valor del tipo de column

Ejemplos

El miembro de mayor edad de cada estado

MySQL 8.4
SELECT member_name,
	status,
	birthday,
	FIRST_VALUE(member_name) OVER (
		PARTITION BY status
		ORDER BY birthday
	) AS oldest_in_status
FROM FamilyMembers;
member_namestatusbirthdayoldest_in_status
Lela Quinceydaughter1985-06-07Lela Quincey
Annie Quinceydaughter1988-04-10Lela Quincey
Wednesday Addamsdaughter2005-01-13Lela Quincey
Headley Quinceyfather1960-05-13Headley Quincey
Ernest Forrestfather1961-09-11Headley Quincey
Flavia Quinceymother1963-02-16Flavia Quincey
Constance Forrestmother1968-09-06Flavia Quincey
Andie Quinceyson1983-06-05Andie Quincey

Diferencia con el salario más alto

MySQL 8.4
SELECT department_id,
	name,
	salary,
	FIRST_VALUE(salary) OVER (
		PARTITION BY department_id
		ORDER BY salary DESC
	) - salary AS gap_to_top
FROM employees;
department_idnamesalarygap_to_top
1Dmitry Sokolov2200000
1Anna Ivanova21000010000
1Igor Petrov19500025000
1Pavel Smirnov18000040000
1Elena Kozlova17500045000
2Irina Volkova2050000
2Olga Novikova2000005000
2Maxim Morozov16000045000
2Nikita Popov16000045000
3Tatiana Lebedeva1700000

Detalles

El marco por defecto empieza en la primera fila de la partición, así que sin un marco propio la función devuelve el primer valor de la partición.

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