SQL ROW_NUMBER (Português)

Resumo: neste tutorial, você aprenderá como usar o ROW_NUMBER() para atribuir um número sequencial a cada linha em um conjunto de resultados de consulta.

Visão geral da função SQL ROW_NUMBER ()

O ROW_NUMBER() é uma função de janela que atribui um número inteiro sequencial para cada linha no conjunto de resultados da consulta.

O seguinte ilustra a sintaxe da função ROW_NUMBER():

Nesta sintaxe,

  • Primeiro, a cláusula PARTITION BY divide o conjunto de resultados retornado de FROM em partições. A cláusula PARTITION BY é opcional. Se você omiti-lo, todo o conjunto de resultados será tratado como uma única partição.
  • Então, a cláusula ORDER BY classifica as linhas em cada partição. Como ROW_NUMBER() é uma função sensível à ordem, a cláusula ORDER BY é necessária.
  • Finalmente, cada linha em cada partição é atribuído a um número inteiro sequencial denominado número de linha. O número da linha é redefinido sempre que o limite da partição é ultrapassado.

Exemplos de SQL ROW_NUMBER ()

Usaremos o employees e departments tabelas do banco de dados de amostra para a demonstração:

A) Exemplo de SQL ROW_NUMBER () simples

A instrução a seguir encontra o nome, o sobrenome e o salário de todos os funcionários. Além disso, ele usa a função ROW_NUMBER() para adicionar um número inteiro sequencial a cada linha.

A imagem a seguir mostra o conjunto de resultados parcial:

B ) Usando SQL ROW_NUMBER () para paginação

A função ROW_NUMBER() pode ser usada para paginação. Por exemplo, se você deseja exibir todos os funcionários em uma tabela em um aplicativo por páginas, cada página com dez registros.

  • Primeiro, use o ROW_NUMBER() função para atribuir a cada linha um número inteiro sequencial.
  • Em segundo lugar, filtre as linhas por página solicitada. Por exemplo, a primeira página tem as linhas começando de um a 9, e a segunda página tem as linhas começando de 11 a 20 e assim por diante.

A instrução a seguir retorna os registros de a segunda página, cada página tem dez registros.

O seguinte mostra a saída:

Se você deseja usar a expressão de tabela comum (CTE) em vez da subconsulta, aqui está a consulta:

C) Usando SQL ROW_NUMBER () para encontrar o enésimo maior valor por grupo

O exemplo a seguir mostra como encontrar os funcionários que têm o maior salário em seus departamentos:

Na subconsulta:

  • Primeiro, a PARTITION BY cláusula distribui os funcionários por departamentos.
  • Em segundo lugar, o ORDER BY cláusula classifica o funcionário em cada departamento por salário em ordem decrescente.
  • Terceiro, a ROW_NUMBER() atribui a cada linha um número inteiro sequencial . Ele redefine o número quando o departamento muda.

O seguinte mostra o conjunto de resultados da subconsulta:

Na consulta externa, selecionamos apenas as linhas de funcionários que têm row_num com o valor 1.

Aqui está a saída de toda a consulta:

Se você alterar o predicado na WHERE cláusula de 1 para 2, 3 e assim por diante, obterá os funcionários que tem o segundo maior salário, o terceiro maior salário e assim por diante.

Neste tutorial, você aprendeu como usar a função SQL ROW_NUMBER() para atribuir uma sequência número inteiro para cada linha no conjunto de resultados de uma consulta.

  • Este tutorial foi útil?
  • Sim Não

Write a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *