logo

Número de fila del servidor SQL

El número de fila es el más común. función de clasificación utilizado en SQL Server. La función ROW_NUMBER() genera un número secuencial para cada fila dentro de una partición en la salida resultante. En cada partición, el número de la primera fila comienza con 1. Siempre debemos usar el ORDENAR POR cláusula para garantizar que los números se asignen en la secuencia adecuada. Los valores devueltos por esta función son de EMPEZANDO tipo de datos. Esta función viene con SQL Server 2005 y versiones posteriores de MS SQL.

El ROW_NUMBER determina el valor temporal cuando se ejecuta la consulta. Si desea obtener los números en una tabla, necesita ver el IDENTIDAD propiedad y SECUENCIA . Cuando la función ROW_NUMBER en SQL Server encuentra dos valores idénticos en la misma partición, les asigna números de rango diferentes. El número de clasificación estará determinado por el orden en que se muestran.

harald balder

No hay garantía de que el valor devuelto por esta función se ordene igual para cada ejecución, a menos que se cumpla lo siguiente:

  • Los valores de las columnas particionadas son únicos
  • Los valores de las columnas ORDER BY son únicos
  • La combinación de columnas Partición y Ordenar por es única

Sintaxis

La siguiente es la sintaxis que ilustra la función ROW_NUMBER():

 ROW_NUMBER() OVER ( [PARTITION BY partition_expression, ... ] ORDER BY sort_expression [ASC | DESC], ... ) 

Entendamos la sintaxis de la función NÚMERO DE FILA():

ENCIMA

Es importante entender esta cláusula que especifica la ventana o conjunto de filas que opera la función de ventana. PARTITION BY y ORDER BY son las dos posibles cláusulas de la cláusula OVER. La expresión ORDER BY de la cláusula OVER se admite cuando las filas deben venir en un orden específico para que se ejecute la función.

PARTICIÓN POR

tipos de datos java
  • Es una cláusula opcional que divide el conjunto de resultados en particiones (grupos de filas). Luego, la función NÚMERO DE FILA() se aplica a cada partición y asigna el número de rango de cada partición por separado.
  • Si omitimos la cláusula partición por, la función ROW_NUMBER tratará el resultado completo como una única partición y proporcionará una clasificación de arriba a abajo.

ORDENAR POR

Esta cláusula nos permite ordenar las filas del conjunto de resultados dentro de cada partición. Es una cláusula obligatoria porque la función ROW_NUMBER() depende del orden.

Ejemplo

Entendamos cómo funciona la función ROW_NUMBER en la tabla de SQL Server con un ejemplo. Primero, crearemos una tabla llamada ' personas ' usando la siguiente declaración:

 CREATE TABLE Persons ( person_name varchar(45) NOT NULL, product varchar(45) DEFAULT NULL, country varchar(25) DEFAULT NULL, price float, years int NOT NULL ); 

A continuación, agregaremos algunos registros a esta tabla usando la siguiente declaración:

 INSERT INTO Persons (person_name, product, country, price, years) VALUES ('Steffen', 'Computer', 'USA', 20000.00, 2018), ('Joseph', 'Laptop', 'India', 35000.00, 2016), ('Kevin', 'TV', 'USA', 15000.00, 2016), ('Thompson', 'Mobile', 'France', 12500.00, 2017), ('Donald', 'Laptop', 'England', 30000.00, 2018), ('Joseph', 'Mobile', 'India', 18000.00, 2018), ('Matthew', 'Desktop', 'France', 22000.00, 2017), ('Antonio', 'Mouse', 'England', 1200.00, 2016); 

A continuación, verifique los datos utilizando el SELECCIONAR declaración. Obtendremos el siguiente resultado:

Número de fila del servidor SQL

1. Ejemplo sencillo de ROW_NUMBER()

La siguiente declaración muestra los detalles de la persona y agrega un número entero secuencial a cada fila usando ROW_NUMBER():

 SELECT *, ROW_NUMBER() OVER (ORDER BY price) AS row_num FROM Persons; 

Aquí, no hemos especificado la cláusula PARTITION BY para que la función ROW_NUMBER() trate todo el conjunto de resultados como una única partición. Después de la ejecución de la declaración, obtendremos el siguiente resultado:

Número de fila del servidor SQL

2. Ejemplo de ROW_NUMBER() sobre particiones

La función NÚMERO DE FILA() que se utiliza en este ejemplo proporciona un número secuencial a cada registro dentro de una partición en una tabla. Siempre reinicializa el número de fila cuando cambia el año:

 SELECT person_name, product, price, years, ROW_NUMBER() OVER ( PARTITION BY years ORDER BY price) AS row_num FROM Persons; 

Aquí hemos utilizado la cláusula PARTICIÓN POR que divide el 'Personas' tabla en particiones según el 'años' columna. Después de la ejecución, obtendremos el siguiente resultado:

Número de fila del servidor SQL

3. Ejemplo de ROW_NUMBER() para paginación

genericidad en java

También podemos usar la función ROW_NUMBER() para la paginación. Por ejemplo , si queremos obtener toda la información de una persona en una aplicación por páginas, primero asignaremos a cada fila un número secuencial usando la función ROW_NUMBER(). En segundo lugar, ordene las filas por la página solicitada.

La siguiente declaración lo explica más claramente:

 SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY price) AS row_num, person_name, product, price FROM Persons) P WHERE row_num &gt; 3 AND row_num <= 6; < pre> <p>It will give the following output:</p> <img src="//techcodeview.com/img/sql-server-tutorials/96/sql-server-row-number-4.webp" alt="SQL Server Row Number"> <p>If we do not want to use the <strong>subquery</strong> , we can use the <strong>common table expression (CTE)</strong> as below statement:</p> <pre> WITH CTE_Person AS ( SELECT ROW_NUMBER() OVER (ORDER BY price) AS row_num, person_name, product, price FROM Persons) SELECT * FROM CTE_Person WHERE row_num &gt; 3 AND row_num <= 6; < pre> <p>In this example, we have first specified the CTE that uses the ROW_NUMBER() function to assign each row in the result set sequentially. Second, the outer query returned the desired result. After execution, we will get the following output:</p> <img src="//techcodeview.com/img/sql-server-tutorials/96/sql-server-row-number-5.webp" alt="SQL Server Row Number"> <h3>Conclusion</h3> <p>In this article, we learned how to give a sequential number to each record within a partition of a query using the ROW NUMBER() function in SQL Server.</p> <hr></=></pre></=>