Função SQL DENSE_RANK()

Funcao Sql Dense Rank



As funções de janela são um recurso crucial em SQL e desempenham um papel fundamental em cálculos e operações de dados complexos em bancos de dados SQL. Uma das funções nas funções da janela SQL é a Dense_rank().

A função DENSE_RANK() nos permite atribuir uma classificação exclusiva a cada linha em um conjunto de resultados com base nos valores de mais uma coluna especificada. É muito semelhante à função rank(), mas com pequenas diferenças na forma como a função trata os registros duplicados.

Neste tutorial, exploraremos como esta função funciona, a sintaxe fornecida e como podemos usá-la em um banco de dados.







Como funciona

Vamos começar explicando como funciona essa função. É bom ter em mente que a função é de alto nível e não podemos explicar a implementação subjacente.



A função funciona atribuindo uma classificação a cada linha no conjunto de resultados, começando na classificação 1 e aumentando em 1 para cada valor exclusivo nas colunas.



As linhas com valores semelhantes (duplicados) nas colunas especificadas são atribuídas à mesma classificação e a próxima linha com um valor diferente é atribuída à próxima classificação disponível, sem lacunas.





Como mencionamos, a função não deixa lacunas onde há valores duplicados, o que a torna diferente da função rank().

Um uso comum da função densa_rank() é realizar operações de classificação. Por exemplo, podemos usá-lo para encontrar os N registros principais, etc.



Sintaxe da função:

O seguinte descreve a sintaxe da função densa_rank():

DENSE_RANK() ACIMA (

[PARTIÇÃO POR expressão_de_partição, ...]

ORDEM POR expressão_classificada [ASC | DESC], ...

)

Na sintaxe fornecida:

  1. Começamos com a própria função densa_rank().
  2. A cláusula OVER sinaliza o início das especificações da função da janela. Isso define como a classificação é aplicada no conjunto de resultados.
  3. A PARTITION BY partição_expressão é uma cláusula opcional que nos permite particionar o conjunto resultante em grupos ou partições com base em uma ou mais colunas. A classificação é aplicada separadamente em cada partição, com a classificação sendo redefinida em uma nova partição.
  4. O ORDER BY sort_expression especifica a ordem em que desejamos usar para classificar os dados nas partições resultantes.

Dados de amostra

Para demonstrar como usar a função densa_rank(), vamos começar com uma tabela com dados de amostra. No nosso caso, usamos um exemplo de tabela de “pedidos” como segue:

Exemplo 1: uso da função Dense_Rank()

Podemos usar a função densa_rank() para classificar os pedidos resultantes com base no preço. Considere o seguinte exemplo de consulta:

SELECIONAR

id_pedido,

nome de usuário_cliente,

produto_comprado,

DENSE_RANK() ACIMA (

ORDEM POR

preço DISCO

) preço_classificação

DE

ordens o;

No exemplo dado, usamos a função densa_rank() para classificar os dados com base no preço dos pedidos. Omitimos a cláusula PARTITION BY porque não o fazemos para agrupar os dados.

A saída resultante é a seguinte:

Exemplo 2: PARTIÇÃO POR

Também podemos adicionar a cláusula PARTITION BY para agrupar os dados em vários segmentos, como com base no produto adquirido.

Um exemplo de consulta é o seguinte:

SELECIONAR

id_pedido,

nome de usuário_cliente,

produto_comprado,

DENSE_RANK() ACIMA (

partição por product_purchased

ORDEM POR

preço DISCO

) preço_classificação

DE

ordens o;

Isto deve agrupar os dados em vários grupos com base nos grupos resultantes e aplicar a classificação aos itens de cada grupo.

Conclusão

Nesta postagem, aprendemos os fundamentos de como usar e trabalhar com a função de janela densa_rank() em SQL para atribuir uma classificação aos valores com base em colunas específicas.