🎉 SEMANA DO CONSUMIDOR

Últimos dias para comprar os cursos com 50% de desconto

Ver detalhes

Postado em em 29 de novembro de 2024

Você sabe como criar rankings no SQL? Isso é muito útil para diversas análises, e nesta postagem você aprenderá como construir essa consulta a partir do zero!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Como criar rankings no SQL: rank e dense_rank

Rankings são ferramentas essenciais para organizar dados e facilitar a análise em diversas áreas, desde vendas até gestão de recursos.

Eles ajudam a estruturar informações, identificar tendências e destacar os elementos mais relevantes em um conjunto de dados.

Apesar de ser uma consulta tão comum e importante, nem todo mundo sabe criar rankings no SQL. Por isso, hoje, eu vou te ensinar como fazer isso, desde os conceitos básicos até a aplicação prática, utilizando as funções RANK e DENSE_RANK.

Rankings no SQL

Um ranking nada mais é do que uma posição atribuída a cada elemento de acordo com um critério específico.

Imagine que você deseja saber qual é o produto mais vendido ou o cliente com maior gasto. O SQL permite ordenar e classificar os dados de maneira eficiente.

Essas classificações são feitas por meio de funções de janela, que realizam cálculos sobre um subconjunto de dados (chamado de “janela”) sem alterar o agrupamento original.

Neste caso, utilizaremos as funções RANK e DENSE_RANK para classificar os registros dentro da “janela”, que será definida pela cláusula OVER.

Se você quiser entender melhor como funcionam as funções de janela no SQL, confira nosso curso completo e gratuito: Série Análise de Dados no SQL – Aprenda Funções de Janela

Função rank no SQL

A função RANK atribui um número sequencial a cada registro de um conjunto de resultados, baseado na ordem definida.

Ela permite que registros com valores idênticos (empates) em uma coluna ou combinação de colunas recebam o mesmo número de classificação.

No entanto, quando ocorre um empate, o próximo número da sequência é ajustado para refletir o total de registros anteriores.

Exemplo: Se dois registros estiverem empatados no 2º lugar, ambos receberão o número 2, mas o próximo registro receberá o número 4 (pulando o 3).

Vamos visualizar um exemplo prático dessa função usando uma tabela de produtos. Aqui, criaremos um ranking com base na marca dos produtos.

Agruparemos os produtos pela marca, contaremos o número de registros em cada grupo e classificaremos esses grupos em ordem decrescente com base no total de registros.

Nesse caso, utilizaremos a função de agregação COUNT(*) para contar o número de registros em cada grupo de marca. O resultado será atribuído à coluna total, que mostrará a quantidade de registros por grupo.

A função RANK() será usada para atribuir uma classificação a cada grupo. A cláusula OVER define que a classificação será calculada como uma função de janela, enquanto o comando ORDER BY COUNT(*) DESC organiza os grupos em ordem decrescente.

SELECT
    Marca_Produto,
    COUNT(*) AS total,
    RANK() OVER (ORDER BY COUNT(*) DESC) AS ranking
FROM produtos
GROUP BY Marca_Produto;

Com isso, temos o ranking dos produtos por marca.

Função rank no SQL

Repare que, após as duas marcas empatadas em terceiro lugar, a próxima classificação atribuída foi a quinta.

Função DENSE_RANK no SQL

A função DENSE_RANK é semelhante à função RANK, mas, em caso de empates, ela não pula valores na sequência. Isso significa que, mesmo com empates, os números de classificação permanecem contínuos.

Exemplo: Se dois registros estiverem empatados no 2º lugar, ambos receberão o número 2, e o próximo registro receberá o número 3.

Podemos refazer o exemplo anterior utilizando essa função. Veremos que, com ela, o ranking segue a ordem das posições normalmente.

SELECT
    Marca_Produto,
    COUNT(*) AS total,
    DENSE_RANK() OVER (ORDER BY COUNT(*) DESC) AS ranking
FROM produtos
GROUP BY Marca_Produto;
Função DENSE_RANK no SQL

Quando Usar rank ou dense_rank

  • Use RANK quando os empates precisarem pular posições (como em competições).
  • Use DENSE_RANK para rankings contínuos, como na análise de desempenho.

Benefícios do Uso de Rankings no SQL

  • Simplicidade na análise: Rankings facilitam a identificação dos principais elementos em uma base de dados.
  • Flexibilidade: As funções de janela permitem criar rankings com base em múltiplos critérios.
  • Automação: Rankings automáticos eliminam a necessidade de cálculos manuais, economizando tempo e reduzindo erros.

Conclusão – Como criar rankings no SQL: rank e dense_rank

Criar rankings no SQL é uma habilidade fundamental para qualquer analista de dados. As funções RANK e DENSE_RANK tornam a análise de dados no SQL muito mais poderosa e prática.

Na aula de hoje, você aprendeu como utilizá-las para organizar e visualizar informações de maneira eficiente, sendo uma ferramenta valiosa para a tomada de decisões.

Além disso, essas funções fazem parte do grupo das funções de janela, um conceito essencial para quem deseja dominar o SQL.

Hashtag Treinamentos

Para acessar outras publicações de SQL, clique aqui!


Quer aprender mais sobre SQL com um minicurso básico gratuito?

Posts mais recentes de SQL

Posts mais recentes da Hashtag Treinamentos

Diego Monutti

Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.