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!
O que você vai aprender hoje?
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.
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;
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.
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;
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;
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;
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ério | Subqueries | Funções de Janela |
Performance | Recalcula o total geral por linha | Calcula o total uma única vez |
Facilidade de Uso | Pode ser mais intuitivo para iniciantes | Requer um conhecimento maior de SQL |
Cenários Ideais | Tabelas Pequenas | Qualquer 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!
Posts mais recentes de SQL
- 5 Boas Práticas de SQL para Iniciantes: Otimize Suas Consultas e Organize Seu CódigoSe você está começando com MySQL ou busca melhorar suas habilidades em SQL, este post traz cinco boas práticas de escrita de SQL para iniciantes.
- 5 Verdades Sobre SQL que Você Provavelmente Não SabiaVocê sabia que o SQL é uma das habilidades mais valiosas no mundo dos dados? Neste post revelamos 5 verdades sobre o SQL que provavelmente você não conhecia.
- 5 Mitos sobre SQL que Você Deve Abandonar para Dominar a Linguagem!Você já deve ter ouvidos alguns mitos sobre SQL: que ele é ultrapassado, difícil ou só para especialistas em banco de dados.
Posts mais recentes da Hashtag Treinamentos
- Função SE Excel: Exemplos e Dicas para Uso [Guia]A função SE Excel é muito útil para definir condições e criar uma planilha mais completa e funcional. Confira nesta aula!
- Exercícios de Listening em Inglês – Como Melhorar sua CompreensãoFaça estes exercícios de listening em inglês e melhore sua compreensão! Descubra técnicas e estratégias para praticar e evoluir no aprendizado do idioma!
- TCP e UDP: o que são, diferenças e quando usarEntenda o que é TCP e UDP, as diferenças entre os protocolos, suas vantagens e quando usar cada um. Aprenda com exemplos práticos e linguagem acessível.
Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.