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:
- Começamos com a própria função densa_rank().
- 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.
- 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.
- 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:
SELECIONARid_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:
SELECIONARid_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.