Percentual do Total no SQL: Duas Formas para Calcular
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.
Há duas formas de calcular o percentual do total no SQL. Na primeira, uma subquery calcula o total geral e cada grupo é dividido por ela: COUNT(*) * 100.0 / (SELECT COUNT(*) FROM tabela). Na segunda, mais eficiente, usa-se a função de janela SUM(COUNT(*)) OVER(), que calcula o total uma única vez.
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ê aprende neste vídeo
Resposta rápida: O percentual do total divide o valor de cada grupo pelo total geral. A aula mostra duas soluções: uma subquery que obtém o total e uma função de janela com SUM(COUNT(*)) OVER(). As duas chegam ao mesmo resultado, mas a janela evita recalcular a subconsulta linha por linha em bases maiores.
Neste vídeo (19 min):
- 2:50 - Agrupamento inicial para contar produtos por marca
- 5:04 - A fórmula: valor da linha dividido pelo total geral
- 6:25 - Primeira solução usando uma subquery dentro da consulta principal
- 7:54 - Inclusão do total geral em cada linha do agrupamento
- 8:46 - Cálculo do percentual e multiplicação por
100.0 - 11:19 - Segunda solução usando funções de janela
- 12:55 - Construção do total com
SUM(COUNT(*)) OVER() - 14:39 - Arredondamento e formatação do resultado percentual
- 16:19 - Comparação de processamento entre subquery e função de janela
Trechos do vídeo:
- O denominador deve ser calculado dinamicamente para acompanhar mudanças na tabela.
- A subquery resolve o cálculo, mas pode repetir o trabalho para cada linha.
- A função de janela calcula o total no contexto da consulta e escala melhor para volumes maiores.
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 |
Perguntas frequentes
1. Como calcular a porcentagem do total no SQL com subquery?
Divida a contagem de cada grupo pelo total geral obtido por uma subquery e multiplique por 100. Exemplo: SELECT marca, COUNT(*) * 100.0 / (SELECT COUNT(*) FROM produtos) AS percentual FROM produtos GROUP BY marca. O 100.0 garante o resultado em decimais, e não em números inteiros truncados.
2. O que são funções de janela no cálculo de percentual?
Funções de janela realizam cálculos sobre um conjunto de linhas sem agrupá-las diretamente. Para o percentual do total, usa-se SUM(COUNT(*)) OVER() como denominador, que soma todas as contagens de uma só vez. Isso é mais eficiente que a subquery, pois o total geral é calculado apenas uma vez, não linha a linha.
3. Como mostrar o percentual com duas casas e o símbolo de porcentagem?
Combine as funções ROUND e CONCAT. O ROUND arredonda o cálculo para duas casas decimais e o CONCAT adiciona o símbolo de porcentagem: CONCAT(ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 2), ‘%’). Você ainda pode usar ORDER BY para exibir os resultados da maior para a menor porcentagem.
4. Subquery ou função de janela: qual escolher para o percentual?
Depende do tamanho da tabela. Para tabelas pequenas ou scripts simples, a subquery é suficiente e mais intuitiva para iniciantes. Para grandes volumes de dados ou consultas complexas, prefira as funções de janela: elas calculam o total uma única vez, reduzem o processamento e são mais flexíveis para combinar métricas.
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
- UPDATE em SQL: guia completo para usar o comando sem cometer errosUPDATE em SQL: entenda como atualizar dados com segurança, sintaxe, exemplos práticos e cuidados para evitar erros comuns.
- SQL DELETE: como usar o comando para excluir dados?SQL DELETE: entenda como excluir registros, usar a sintaxe correta e evitar erros ao remover dados de tabelas em bancos SQL.
- Guia completo para desenvolvedor SQL: o que faz, salário e como aprenderConheça as funções do desenvolvedor SQL, salários médios, como começar na área e como está o atual mercado de trabalho.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








