ROW_NUMBER (Español)
Sintaxis
Descripción de la illustration row_number.gif
Consulte también:
«Funciones analíticas» para obtener información sobre sintaxis, semántica y restricciones
Propósito
ROW_NUMBER
es una función analítica. Asigna un número único a cada fila a la que se aplica (ya sea cada fila de la partición o cada fila devuelta por la consulta), en la secuencia ordenada de filas especificada en order_by_clause
, comenzando con 1.
Al anidar una subconsulta usando ROW_NUMBER
dentro de una consulta que recupera los valores ROW_NUMBER
para un rango especificado, puede encontrar un subconjunto preciso de filas a partir de los resultados de la consulta interna. Este uso de la función le permite implementar informes top-N, bottom-N e inner-N. Para obtener resultados coherentes, la consulta debe garantizar un orden de clasificación determinista.
No puede utilizar ROW_NUMBER
ni ninguna otra función analítica para expr
. Es decir, no puede anidar funciones analíticas, pero puede usar otras expresiones de función integradas para expr
. Consulte «Acerca de las expresiones SQL» para obtener información sobre las formas válidas de expr
.
Ejemplos
Para cada departamento de la tabla de muestra oe.employees
, el siguiente ejemplo asigna números a cada fila en el orden de la fecha de contratación del empleado:
ROW_NUMBER
es un función no determinista. Sin embargo, employee_id
es una clave única, por lo que los resultados de esta aplicación de la función son deterministas.
Consulte también:
FIRST_VALUE y LAST_VALUE para ver ejemplos de comportamiento no determinista
La siguiente consulta N interno selecciona todas las filas de la tabla employees
pero devuelve solo del cincuenta al uno al uno- centésima fila:
SELECT last_name FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees) WHERE R BETWEEN 51 and 100;