Como usar o número da linha do servidor SQL

Como usar o número da linha do servidor SQL
Na maioria dos casos, quando precisamos numerar itens em um banco de dados, pulamos para a propriedade de identidade. No entanto, o que acontece quando você precisa numerar as linhas de um resultado? É aqui que a função de número de linha entra em jogo.

A função do número da linha permite atribuir um número seqüencial a cada linha como resultado de uma consulta SQL.

A função row_number () faz parte das funções da janela do servidor SQL. Usando esta função, você pode atribuir um número inteiro progressivo a cada linha em cada conjunto de partições de um resultado. Cada número começa em 1 e redefine as linhas em cada partição.

Função Sintaxe e Valor de Retorno

A sintaxe da função é como mostrado:

Row_number ()
Over (partição por partition_expression
Ordem por order_by_expression
);

Vamos quebrar a sintaxe acima.

  1. Partição por - a cláusula de partição por. A função row_number é então aplicada a cada partição. A partição por parâmetro é opcional e, se não for especificada, a função row_number tratará o conjunto resultante como uma única partição.
  2. O pedido por cláusula permite a ordem de classificação para as linhas em cada conjunto de partições. Ao contrário da cláusula de partição, a função row_number requer essa cláusula como uma função sensível à ordem.

A função retorna atribuindo um número seqüencial às linhas em cada partição. Como mencionado, a função redefinirá o número da linha para cada nova partição.

SQL Server Row_Number (): Exemplos

Vamos usar um exemplo para entender melhor como usar a função row_number (). Comece criando um banco de dados de amostra com dados fictícios, como mostrado nas consultas abaixo:

Crie banco de dados DUMMY_DB;
Use DUMMY_DB;
Crie tabela DUMMY_TABLE (
Id int não identidade nula (1,1) Chave primária,
primeiro nome Varchar (50),
LastName Varchar (50),
Email Varchar (100),
dinheiro salarial,
Departamento Varchar (50)
);
Insira em DUMMY_TABLE (FirstName, LackName, Email, Salário, Departamento)
Valores ('Karen', 'Colmen', '[email protected] ', US $ 149000,' desenvolvimento de jogos '),
('Alex', 'Bell', '[email protected] ', US $ 150000,' Desenvolvimento de Graphics '),
('Charles', 'Johnson', '[email protected] ', $ 120500,' DevOps Development '),
('Bruce', 'Greer', '[email protected] ', US $ 118000,' desenvolvimento de segurança '),
('Sarah', 'Austin', '[email protected] ', US $ 165000,' desenvolvimento de jogos '),
('Diana', 'kim', '[email protected] ', US $ 105000,' Desenvolvimento front-end '),
('Peter', 'Cogh', '[email protected] ', US $ 100000,' Desenvolvimento de Graphics '),
('David', 'Hugh', '[email protected] ', US $ 126000,' Desenvolvimento de banco de dados '),
('Tobias', 'Newne', '[email protected] ', US $ 115500,' Desenvolvimento de banco de dados '),
('Winnie', 'Lorentz', '[email protected] ', US $ 175000,' Desenvolvimento de Graphics '),
('Guy', 'Miche', '[email protected] ', US $ 145000,' Desenvolvimento de jogos ');
Selecione * de Dummy_Table;

A consulta acima deve retornar um conjunto resultante como mostrado:

Exemplo 1

A seguinte instrução SQL usa a função row_number para atribuir um número seqüencial às linhas no conjunto resultante:

Selecione Row_Number () sobre (
Ordem por salário) como row_num,
primeiro nome,
sobrenome,
departamento
De Dummy_Table;

A consulta acima deve retornar um conjunto de resultados como mostrado abaixo:

Exemplo 2

Podemos usar a função row_number para localizar o funcionário com o salário mais alto em um departamento específico.

Considere a consulta de exemplo mostrada abaixo:

Selecione FirstName, LastName, Salário, Departamento, Row_Number () Over (Partição por Ordem do Departamento por Salário Desc) como Row_num de Dummy_Table;

A consulta acima divide os dados em partições lógicas com base no departamento. Em seguida, aplicamos a função row_number () a ordem pelo salário em ordem decrescente.

Exemplo 3

Você pode usar a função row_number para paginação. Como a função row_number atribui um número seqüencial a todas as linhas, podemos usá -la para filtrar para um número específico de resultados por página.

Veja o exemplo abaixo:

SELECIONE DE
(Selecione Row_Number ()
Sobre (ordem por salário) como row_num, primeiro nome, último nome, departamento
De Dummy_Table) dt
Onde row_num> = 1 e row_num <= 5;

A consulta acima deve retornar uma saída como:

Conclusão

Neste guia, discutimos como usar a função SQL Server row_number () para atribuir números seqüenciais às linhas em um conjunto de resultados. Além disso, analisamos a sintaxe da função e o valor de retorno. Esperamos que você tenha achado este artigo útil. Confira mais artigos de dica do Linux para obter dicas e tutoriais.