NTH_VALUE
Devuelve el valor de column de la fila n-ésima del marco de la ventana.
NTH_VALUE(column, n)- column
- Columna o expresión cuyo valor se devuelve
- n
- Número de la fila en el marco, empezando por 1INT
Valor devuelto
Valor del tipo de column; NULL si el marco tiene menos de n filas
Ejemplos
El segundo miembro de mayor edad
SELECT member_name,
birthday,
NTH_VALUE(member_name, 2) OVER (
ORDER BY birthday
) AS second_oldest
FROM FamilyMembers;El segundo salario de cada departamento
SELECT department_id,
name,
salary,
NTH_VALUE(salary, 2) OVER (
PARTITION BY department_id
ORDER BY salary DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS second_salary
FROM employees;Detalles
Con el marco por defecto, la fila n-ésima solo es visible a partir de ella misma: las primeras n - 1 filas de la partición reciben NULL. Para obtener el valor en todas las filas, amplía el marco a toda la partición. NTH_VALUE(column, 1) es lo mismo que FIRST_VALUE(column).
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.
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.