Projetos
SQL · Análise

Análise de Vendas com SQL

Responder perguntas de receita direto no banco, com SQL analítico de verdade: CTEs para clareza e window functions para ranking e percentual acumulado — sem exportar nada para planilha.

Ano 2025 Papel Análise de Dados Status Concluído
Contexto

O problema

Perguntas de negócio recorrentes — "quais categorias puxam a receita? quão concentrada ela é?" — não deveriam exigir exportar dados e abrir Excel. O SQL moderno resolve isso no próprio banco, com clareza e performance.

O objetivo foi extrair a receita por categoria e medir a concentração usando recursos analíticos do SQL.

A query

CTE + window functions

Uma CTE agrega a receita por categoria (join de itens → produtos → tradução). Em cima dela, SUM() OVER () calcula o percentual de cada categoria, SUM() OVER (ORDER BY ...) o acumulado, e RANK() a posição:

WITH receita_cat AS (
  SELECT c.product_category_name_english AS categoria,
         SUM(i.price) AS receita
  FROM order_items i
  JOIN products p ON p.product_id = i.product_id
  LEFT JOIN cat  c ON c.product_category_name = p.product_category_name
  GROUP BY categoria
)
SELECT categoria, receita,
       ROUND(100.0 * receita / SUM(receita) OVER (), 1)                                   AS pct,
       ROUND(100.0 * SUM(receita) OVER (ORDER BY receita DESC) / SUM(receita) OVER (), 1) AS pct_acumulado,
       RANK() OVER (ORDER BY receita DESC)                                                AS posicao
FROM receita_cat
ORDER BY receita DESC
LIMIT 15;
Achados

Receita por categoria

Resultado

O que o SQL revelou

9,3%
categoria líder: health_beauty
~40%
receita concentrada nas 5 maiores categorias
1 query
ranking + % + acumulado, sem planilha
Ferramentas

Stack & decisões

SQL Window Functions CTE JOIN · GROUP BY RANK() · SUM() OVER()