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;