🎉 SEMANA DO CONSUMIDOR

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

Ver detalhes

Postado em em 22 de novembro de 2024

Você sabe como calcular o percentual do total no SQL? Neste post, vou te ensinar duas formas de realizar esse cálculo tão importante para suas consultas.

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

Percentual do Total no SQL: Duas Formas para Calcular

Ao trabalhar com SQL, uma análise comum é calcular o percentual que cada grupo representa dentro de um conjunto de dados.

Hoje, vou mostrar duas formas de calcular o percentual do total no SQL: utilizando subqueries e funções janela.

O que é o percentual do total e por que ele é importante?

O percentual do total é uma métrica que indica quanto um subconjunto de dados representa em relação ao total geral.

Imagine que você tem uma tabela com diferentes marcas e seus respectivos produtos. Calcular o percentual de cada marca em relação ao total ajuda a identificar quais delas têm maior peso nas vendas ou no estoque.

Esses dados são cruciais para tomadas de decisão, como intensificar campanhas de marketing para marcas mais representativas ou diversificar fornecedores.

O cálculo do percentual envolve dividir o valor de cada grupo pelo total geral, multiplicando o resultado por 100 para obter a porcentagem.

Contextualizando o Problema

Para exemplificar as duas abordagens que veremos nesta aula, vamos utilizar uma tabela de produtos com informações sobre o ID do Produto, Nome, ID da Categoria, Marca do Produto, Número de Série, Preço Unitário e Custo Unitário.

Tabela de Exemplo

Nosso objetivo será, a partir dessa tabela, criar uma consulta SQL que retorne o total de produtos por marca e o percentual que cada marca representa em relação ao total geral de produtos.

Cálculo de Total por Marca no SQL – GROUP BY

O primeiro passo para o nosso cálculo de percentual é descobrir o total de produtos por marca. Para isso, utilizaremos a função COUNT, realizando um agrupamento (GROUP BY) dos produtos a partir da marca.

Podemos também usar o comando ORDER BY para ordenar as marcas, daquelas com mais produtos para as que têm menos.

SELECT
    marca_produto,
    COUNT(*) as total
FROM produtos
GROUP BY marca_produto
ORDER BY COUNT(*) desc;
Cálculo de Total por Marca no SQL – GROUP BY

Isso já nos ajuda a visualizar a diferença entre as marcas. No entanto, a porcentagem nos permite compreender melhor o impacto de cada produto por marca.

Caso você tenha dúvidas sobre o uso do GROUP BY no SQL, confira nossa aula: Group By com Join no SQL – Uma Combinação Poderosa

Percentual do Total – Usando subqueries

As subqueries (ou subconsultas) permitem realizar cálculos intermediários que podem ser utilizados nas consultas principais. Ou seja, utilizamos uma subconsulta dentro de uma consulta principal.

Nesse caso, utilizaremos a subquery responsável por calcular o total geral de produtos na tabela produtos:

SELECT COUNT(*) FROM produtos;

Aplicaremos essa subconsulta dentro da consulta principal para calcular o percentual do total.

SELECT
    marca_produto,
    COUNT(*) / (SELECT COUNT(*) FROM produtos) AS '% total'
FROM produtos
GROUP BY marca_produto;

Essa consulta conta o número de produtos por marca e divide pela consulta que calcula o total geral de produtos, retornando o resultado em uma coluna chamada % total.

Percentual do Total – Usando subqueries

Dessa forma, temos as porcentagens exibidas em valores decimais. Para visualizar em valores inteiros, basta multiplicar a contagem por 100.

SELECT
    marca_produto,
    COUNT(*) * 100.0 / (SELECT COUNT(*) FROM produtos) AS '% total'
FROM produtos
GROUP BY marca_produto;
Percentual do Total – Usando subqueries com porcentagem

Embora eficaz, esta abordagem pode ser menos eficiente em tabelas grandes, já que o total geral é recalculado para cada linha.

Entenda como funcionam os diferentes tipos de subqueries e como aplicá-las em seu código: 3 Tipos de Subqueries no SQL – Escalar, Lista e Tabela

Usando Funções de Janela

A segunda abordagem para calcular o percentual do total no SQL é utilizando as funções de janela.

Funções de janela permitem realizar cálculos em conjunto de linhas sem agrupá-las diretamente. Elas são ideais para cálculos percentuais, rankings e acumulados.

Para calcular o total, utilizaremos a função SUM do SQL, que será usada junto com o comando OVER para indicar que a função de janela deve considerar todas as linhas da tabela para o cálculo final.

Ou seja, o SQL contará todas as linhas e, em seguida, somará o valor contado ao longo de toda a tabela.

SELECT
    marca_produto,
    COUNT(*) * 100.0 / SUM(COUNT(*)) OVER() AS total
FROM produtos
GROUP BY marca_produto;
Usando Funções de Janela

Para apresentar os resultados com duas casas decimais e o símbolo de porcentagem, podemos ajustar o código utilizando a função ROUND para arredondar o valor para duas casas decimais e a função CONCAT para adicionar o símbolo %.

Por fim, podemos usar o comando ORDER BY para ordenar os resultados da maior para a menor porcentagem.

SELECT
    marca_produto,
    CONCAT(ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 2), '%') AS '% total'
FROM produtos
GROUP BY marca_produto
ORDER BY COUNT(*) desc;
Percentual com Funções de Janela no SQL

Utilizar as funções de janela é uma forma mais eficiente de calcular o percentual do total, oferecendo algumas vantagens em relação às subqueries:

  • Eficiência: Reduz o processamento, pois, no nosso caso, o total geral é calculado apenas uma vez.
  • Flexibilidade: Permite criar consultas mais complexas, combinando percentuais com outras métricas.

Para aprender mais sobre funções de janela no SQL, confira o nosso Curso Gratuito: Análise de Dados no SQL com Funções de Janela.

Qual abordagem usar?

Se você está lidando com tabelas pequenas ou scripts simples, as subqueries são mais do que suficientes.

No entanto, ao trabalhar com grandes volumes de dados ou consultas complexas, prefira as funções de janela. Elas são otimizadas para cálculos intensivos e reduzem o tempo de processamento.

CritérioSubqueriesFunções de Janela
PerformanceRecalcula o total geral por linhaCalcula o total uma única vez
Facilidade de UsoPode ser mais intuitivo para iniciantesRequer um conhecimento maior de SQL
Cenários IdeaisTabelas PequenasQualquer Tamanho de Tabela

Conclusão – Percentual do Total no SQL: Duas Formas para Calcular

Agora você sabe como calcular o percentual do total no SQL usando duas abordagens diferentes. A escolha entre subqueries e funções de janela depende do tamanho da tabela e do objetivo da consulta.

Se o objetivo for eficiência, especialmente em grandes volumes de dados, as funções de janela são a escolha certa. Para tabelas pequenas ou scripts simples, as subqueries podem atender às necessidades.

Lembre-se de que a escolha do método correto deve considerar tanto o tamanho da tabela quanto o contexto da análise.

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.