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.
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 da query. health_beauty lidera (9,3%); as 5 maiores categorias somam ~40% da receita.
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
SQLWindow FunctionsCTEJOIN · GROUP BYRANK() · SUM() OVER()