SQL ROW_NUMBER (Español)

Resumen: en este tutorial, aprenderá a usar ROW_NUMBER() para asignar un número secuencial a cada fila en un conjunto de resultados de consulta.

Descripción general de la función SQL ROW_NUMBER ()

La ROW_NUMBER() es una función de ventana que asigna un número entero secuencial a cada fila en el conjunto de resultados de la consulta.

Lo siguiente ilustra la sintaxis de la función ROW_NUMBER():

En esta sintaxis,

  • Primero, la cláusula PARTITION BY divide el conjunto de resultados devuelto de FROM cláusula en particiones. La cláusula PARTITION BY es opcional. Si lo omite, todo el conjunto de resultados se trata como una sola partición.
  • Luego, la cláusula ORDER BY ordena las filas en cada partición. Debido a que ROW_NUMBER() es una función sensible al orden, la cláusula ORDER BY es obligatoria.
  • Por último, cada fila de cada A la partición se le asigna un número entero secuencial llamado número de fila. El número de fila se restablece siempre que se cruza el límite de la partición.

Ejemplos de SQL ROW_NUMBER ()

Usaremos el employees y departments tablas de la base de datos de muestra para la demostración:

A) Ejemplo simple de SQL ROW_NUMBER ()

La siguiente declaración busca el nombre, apellido y salario de todos los empleados. Además, utiliza la función ROW_NUMBER() para agregar un número entero secuencial a cada fila.

La siguiente imagen muestra el conjunto de resultados parcial:

B ) Usando SQL ROW_NUMBER () para la paginación

La función ROW_NUMBER() puede usarse para la paginación. Por ejemplo, si desea mostrar todos los empleados en una tabla en una aplicación por páginas, cada página tiene diez registros.

  • Primero, use el ROW_NUMBER() para asignar a cada fila un número entero secuencial.
  • En segundo lugar, filtre las filas por página solicitada. Por ejemplo, la primera página tiene las filas que comienzan del uno al 9, y la segunda página tiene las filas que comienzan del 11 al 20, y así sucesivamente.

La siguiente declaración devuelve los registros de la segunda página, cada página tiene diez registros.

A continuación se muestra el resultado:

Si desea usar la expresión de tabla común (CTE) en lugar de la subconsulta, aquí está la consulta:

C) Usando SQL ROW_NUMBER () para encontrar el enésimo valor más alto por grupo

El siguiente ejemplo le muestra cómo encontrar los empleados que tienen el salario más alto en sus departamentos:

En la subconsulta:

  • Primero, la cláusula PARTITION BY distribuye a los empleados por departamentos.
  • Segundo, la ORDER BY La cláusula clasifica al empleado en cada departamento por salario en orden descendente.
  • En tercer lugar, la ROW_NUMBER() asigna a cada fila un número entero secuencial . Restablece el número cuando cambia el departamento.

A continuación se muestra el conjunto de resultados de la subconsulta:

En la consulta externa, seleccionamos solo las filas de empleados que tienen row_num con el valor 1.

Aquí está el resultado de toda la consulta:

Si cambia el predicado en la cláusula WHERE de 1 a 2, 3, y así sucesivamente, obtendrá los empleados que tener el segundo salario más alto, el tercer salario más alto, etc.

En este tutorial, ha aprendido a usar la función SQL ROW_NUMBER() para asignar una secuencia número entero para cada fila en el conjunto de resultados de una consulta.

  • ¿Fue útil este tutorial?
  • SíNo

Write a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *