Cómo usar el número de fila SQL Server

Cómo usar el número de fila SQL Server
En la mayoría de los casos, cuando necesitamos numerar elementos en una base de datos, saltamos a la propiedad de identidad. Sin embargo, lo que sucede cuando necesita numerar las filas de un resultado? Aquí es donde entra en juego la función de número de fila.

La función de número de fila le permite asignar un número secuencial a cada fila como resultado de una consulta SQL.

La función row_number () es parte de las funciones de la ventana del servidor SQL. Usando esta función, puede asignar un entero progresivo a cada fila de cada conjunto de particiones de un resultado. Cada número comienza en 1 y se restablece para las filas en cada partición.

Sintaxis de función y valor de retorno

La sintaxis de la función es como se muestra:

NUMERO DE FILA ()
Over (Partition by Partition_Expression
Pedido por orden_by_expresión
);

Desglosemos la sintaxis anterior.

  1. Partition by: la partición por cláusula le permite dividir su resultado establecido en varias particiones lógicas. La función row_number se aplica a cada partición. La partición por parámetro es opcional y, si no se especifica, la función row_number tratará el conjunto resultante como una única partición.
  2. El orden por cláusula le permite la orden de clasificación para las filas dentro de cada conjunto de particiones. A diferencia de la Partición por cláusula, la función Row_Number requiere esta cláusula como una función sensible a la orden.

La función devuelve asignando un número secuencial a las filas en cada partición. Como se mencionó, la función restablecerá el número de fila para cada nueva partición.

SQL Server Row_Number (): ejemplos

Usemos un ejemplo para comprender mejor cómo usar la función row_number (). Comience por crear una base de datos de muestra con datos ficticios como se muestra en las consultas a continuación:

Crear base de datos Dummy_db;
Usar dummy_db;
Crear tabla dummy_table (
ID int no identidad nula (1,1) clave principal,
FirstName Varchar (50),
LastName Varchar (50),
Envíe un correo electrónico a Varchar (100),
dinero salarial,
Departamento Varchar (50)
);
Insertar en Dummy_Table (FirstName, LastName, correo electrónico, salario, departamento)
Valores ('karen', 'colmen', '[email protected] ', $ 149000,' Desarrollo del juego '),
('Alex', 'Bell', [email protected] ', $ 150000,' Desarrollo gráfico '),
('Charles', 'Johnson', '[email protected] ', $ 120500,' Devops Development '),
('Bruce', 'Greer', '[email protected] ', $ 118000,' Desarrollo de seguridad '),
('Sarah', 'Austin', '[email protected] ', $ 165000,' Desarrollo del juego '),
('Diana', 'Kim', '[email protected] ', $ 105000,' Desarrollo front-end '),
('Peter', 'Cogh', '[email protected] ', $ 100000,' Desarrollo gráfico '),
('David', 'Hugh', '[email protected] ', $ 126000,' Desarrollo de la base de datos '),
('Tobias', 'Newne', '[email protected] ', $ 115500,' Desarrollo de la base de datos '),
('Winnie', 'Lorentz', '[email protected] ', $ 175000,' Desarrollo gráfico '),
('Guy', 'Miche', '[email protected] ', $ 145000,' Desarrollo de juegos ');
Seleccionar * de Dummy_table;

La consulta anterior debe devolver un conjunto resultante como se muestra:

Ejemplo 1

La siguiente instrucción SQL utiliza la función Row_Number para asignar un número secuencial a las filas en el conjunto resultante:

Seleccione row_number () over (
Orden por salario) como row_num,
nombre de pila,
apellido,
departamento
De dummy_table;

La consulta anterior debe devolver un conjunto de resultados como se muestra a continuación:

Ejemplo 2

Podemos usar la función Row_Number para localizar al empleado con el salario más alto en un departamento específico.

Considere la consulta de ejemplo que se muestra a continuación:

Seleccione FirstName, LastName, Salario, Departamento, Row_Number () Over (Partition por Orden de departamento por salario Desc) como ROW_NUM de Dummy_Table;

La consulta anterior divide los datos en particiones lógicas basadas en el departamento. Luego aplicamos la función row_number () para ordenar por el salario en orden descendente.

Ejemplo 3

Puede usar la función row_number para la paginación. Dado que la función Row_Number asigna un número secuencial a todas las filas, podemos usarlo para filtrar para un número específico de resultados por página.

Tome el ejemplo a continuación:

SELECCIONAR DE
(Seleccione Row_Number ()
Over (orden por salario) como ROW_NUM, FirstName, LastName, Departamento
De dummy_table) dt
Donde row_num> = 1 y row_num <= 5;

La consulta anterior debe devolver una salida como:

Conclusión

En esta guía, discutimos cómo usar la función SQL Server row_number () para asignar números secuenciales a las filas en un conjunto de resultados. Además, revisamos la función sintaxis y el valor de retorno. Esperamos que hayas encontrado este artículo útil. Echa un vistazo a más artículos de Sugerencia de Linux para consejos y tutoriales.