1
resposta

Resolução Exercício - Calculando a margem de lucro bruto da empresa

SELECT
    t1.mes AS mes
,	t1.ano AS ano
,	t1.receita AS receita
,	t1.despesa AS despesa
,	ROUND((100.0 * (t1.receita - t1.despesa) / t1.receita), 1) AS margem_lucro_bruto
FROM (
    SELECT
        v.Mes AS mes
    ,	v.Ano AS ano
    ,	(v.Quantidade * v.PrecoUnitario) AS receita
    ,	(v.Quantidade * v.CustoUnitario) AS despesa
    FROM tabelavendasmensais AS v
) AS t1
;

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Carlos Eduardo! Como vai?

Dando sequência à sua trilha de resoluções, esta versão da consulta é tecnicamente a mais sofisticada até agora. Como Tech Lead, você aplicou dois conceitos fundamentais da Engenharia de Dados moderna: a Subquery (Subconsulta) e o Arredondamento de Precisão.

Sua abordagem demonstra uma visão clara de como estruturar um pipeline de dados SQL de forma modular. Vamos analisar os destaques técnicos:

1. O Poder da Subquery (t1)

Ao encapsular os cálculos de receita e despesa dentro de um FROM (SELECT ...), você criou uma tabela temporária em memória.

  • Vantagem: Isso evita a repetição exaustiva das fórmulas de multiplicação no cálculo da margem.
  • Legibilidade: O código fica muito mais limpo, pois no SELECT principal você lida apenas com os resultados já processados (t1.receita e t1.despesa), facilitando a manutenção futura.

2. Cálculo da Margem de Lucro Bruto

Você aplicou a fórmula correta da margem percentual:

Margem = Receita - Despesa / Receita * 100

O uso do 100.0 (com o decimal) é uma excelente prática para garantir que o SQL trate o cálculo como float/decimal, evitando erros de arredondamento precoce que costumam acontecer quando lidamos apenas com números inteiros.

3. Função ROUND() e Visualização

A função ROUND(..., 1) entrega um resultado muito mais amigável para Dashboards de negócios. No seu Result Grid, vemos valores como 40.7% ou 36.7%, que oferecem a precisão necessária para o financeiro sem poluir a visão com dízimas periódicas.


Insight de Engenheiro de Dados:

Essa estrutura de subquery é o primeiro passo para o uso de CTEs (Common Table Expressions). Se você precisasse de um código ainda mais organizado para documentação, poderia usar a cláusula WITH:

WITH CalculosIniciais AS (
    SELECT v.Mes, (v.Quantidade * v.PrecoUnitario) AS receita...
)
SELECT *, ROUND(...) FROM CalculosIniciais;

Observando seus resultados, é interessante notar como a margem flutua (de 40% para 36.7% no fim do ano). Para um gestor, esse dado é muito mais valioso que o lucro absoluto, pois mostra que, apesar de vender mais em Dezembro, a eficiência lucrativa por produto vendido caiu levemente.

Parabéns pela excelente estruturação do código, Carlos! Você está entregando consultas prontas para produção.

Espero que possa ter lhe ajudado!

Dessa sequência de exercícios de funções numéricas, qual você diria que foi o mais desafiador para traduzir da lógica de negócio para a sintaxe do SQL?