Exercícios de SQL para Analista de Dados
60 exercícios gratuitos. Trilha de SQL aplicada a perguntas comerciais, operacionais e de marketing, começando pelo Passo 0 para quem ainda está aprendendo a escrever consultas básicas.
Pratique sem cadastro com dados fictícios de varejo. A conta gratuita permite salvar progresso e favoritos.
Execução em SQLite no navegador. Os temas PostgreSQL indicam suas adaptações de sintaxe.
Começar a praticar SQLPasso 0 (10)
- Passo 0: listar todos os clientes
SELECT · FROM · leitura de tabela
- Passo 0: selecionar colunas de clientes
SELECT · FROM · seleção de colunas
- Passo 0: listar produtos do catálogo
SELECT · FROM · colunas de negócio
- Passo 0: filtrar clientes do Sudeste
SELECT · FROM · WHERE · ORDER BY
- Passo 0: filtrar pedidos pagos
SELECT · FROM · WHERE · ORDER BY
- Passo 0: filtrar produtos por categoria
SELECT · FROM · WHERE
- Passo 0: ordenar produtos por preço
SELECT · FROM · ORDER BY
- Passo 0: mostrar os cinco produtos mais caros
SELECT · FROM · ORDER BY · LIMIT
- Passo 0: listar canais de venda sem repetição
SELECT · FROM · DISTINCT · ORDER BY
- Passo 0: agrupar status de pedidos
SELECT · FROM · GROUP BY · ORDER BY
Iniciante (9)
- Fundamento: identificar o grão da tabela de pedidos
granularidade · chave primária · leitura de problema
- Fundamento: separar dado bruto e métrica
métrica · COUNT · DISTINCT
- Receita líquida por região para priorizar ação comercial
JOIN · SUM · GROUP BY · ORDER BY · cálculo de receita
- Clientes ativos em abril para medir base compradora
WHERE · COUNT DISTINCT · datas
- Produtos campeões de faturamento para revisar estoque
JOIN · SUM · GROUP BY · ORDER BY · LIMIT
- Receita por cidade em abril para direcionar operação local
JOIN · WHERE · SUM · GROUP BY · datas
- Pedidos pagos por canal em abril para leitura de demanda
COUNT · WHERE · GROUP BY · ORDER BY · datas
- Clientes novos por região para acompanhar expansão
COUNT · WHERE · GROUP BY · ORDER BY · datas
- BI: escolher o gráfico certo pela pergunta
visualização · análise temporal · gráfico de linha
Intermediário (19)
- Fundamento: transformar métrica em KPI
métrica · KPI · datas · SUM
- Fundamento: ligar fato e dimensões
tabela fato · dimensão · JOIN
- Ticket médio por canal para avaliar qualidade da venda
CTE · AVG · GROUP BY · cálculo por grão
- Pedidos com atraso para ação do time operacional
JOIN · datas · filtro · cálculo de diferença
- Meta batida por vendedor no fechamento mensal
JOIN · CTE · CASE WHEN · datas · percentual
- Clientes sem recompra para campanha de reativação
subquery · NOT EXISTS · datas · CRM
- Resumo de atrasos por transportadora para cobrança logística
JOIN · CASE WHEN · COUNT · GROUP BY · percentual
- Participação de receita por vendedor para leitura de concentração
CTE · JOIN · SUM · window function · percentual
- Categorias acima de mil reais para priorizar análise comercial
JOIN · SUM · GROUP BY · HAVING · filtro pós-agregação
- Desconto médio por categoria para revisar política comercial
JOIN · AVG · GROUP BY · ROUND · percentual
- Vendedores sem meta cadastrada para evitar relatório incompleto
LEFT JOIN · IS NULL · qualidade de dados · auditoria
- Deduplicar cadastro por cidade e região para evitar contagem inflada
DISTINCT · deduplicação · ORDER BY · cadastro
- Tratamento de nulos em metas futuras
LEFT JOIN · COALESCE · tratamento de nulos
- Distribuição de pedidos por faixa de ticket
distribuição · CASE · percentual
- Amostra versus população por canal
amostra · população · ticket médio
- BI: tabela-resumo para dashboard comercial
BI · tabela-resumo · segmentação
- PostgreSQL: filtro textual sem depender de maiúsculas
PostgreSQL · ILIKE · filtro textual
- PostgreSQL: tratar metas ausentes com COALESCE
PostgreSQL · COALESCE · LEFT JOIN
- PostgreSQL: classificar status com CASE
PostgreSQL · CASE WHEN · regra de negócio
Avançado (22)
- Crescimento mensal de receita para reunião de diretoria
CTE · LAG · datas · variação percentual
- Ranking de categorias por margem para decisão de mix
JOIN · margem · agregação · cálculo percentual
- Funil de conversão de campanhas para priorizar mídia
métricas de marketing · divisão segura · ROUND · ORDER BY
- Principal cliente por região para priorizar relacionamento
CTE · JOIN · ROW_NUMBER · PARTITION BY · ranking
- Produtos de baixa margem para revisão de preço
JOIN · SUM · margem · ORDER BY · LIMIT
- Clientes recorrentes por região para avaliar retenção
CTE · JOIN · COUNT · HAVING · retenção
- Variação mensal de receita com LAG para reunião comercial
CTE · LAG · window function · variação mensal · datas
- Receita acumulada por mês para acompanhar meta trimestral
CTE · SUM OVER · window function · acumulado · datas
- Top 2 produtos por categoria com ranking particionado
ROW_NUMBER · PARTITION BY · ranking · JOIN · CTE
- Retenção de clientes entre bimestres para CRM
CTE · retenção · COUNT DISTINCT · LEFT JOIN · percentual
- Coorte de primeira compra por região para leitura de aquisição
CTE · MIN · coorte · GROUP BY · datas
- Intervalo entre compras com LAG para sinais de recompra
LAG · PARTITION BY · JULIANDAY · retenção · datas
- CTEs em cadeia para receita por canal
CTE · SUM · ORDER BY
- Ranking mensal de vendedores com RANK
RANK · PARTITION BY · análise temporal
- Churn de clientes entre bimestres
churn · NOT EXISTS · retenção
- Funil com perda entre etapas
funil · cálculo de taxa · análise de campanha
- Estatística básica: média, mediana e desvio do ticket
média · mediana · desvio padrão · CTE
- Outliers de ticket com regra de desvio
outliers · média · desvio padrão
- Variação percentual mês contra mês
LAG · percentual · mês contra mês
- BI: KPIs por vendedor e categoria
KPI · margem · Power BI
- PostgreSQL: receita mensal no padrão de DATE_TRUNC
PostgreSQL · DATE_TRUNC · análise temporal
- PostgreSQL: consulta pronta para virar view de BI
PostgreSQL · view · base para BI