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.

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.

SQL
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:

Ícone SQLSQL Impressionador

Domine a linguagem mais importante do Mundo para quem trabalha com Dados, seja para se destacar na sua empresa atual, para conseguir um diferencial em processos seletivos ou até mesmo para entrar em áreas de dados.

Começar agoraSeta para a direita
Fundo SQLTelas SQL
Luz SQL
SQL
SELECT COUNT(*) FROM produtos;

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

SQL
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.

SQL
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.

SQL
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.

SQL
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

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!


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

Posts mais recentes de SQL

Posts mais recentes da Hashtag Treinamentos