Introdução a Visualização de Dados e SQL

Material autossuficiente para resolver e justificar Q1-Q16 com validação por dados reais.

Por Fábio Linhares • Instituto Infnet

BASE
Escopo completo e modelo mental
Esta página cobre todo o TP3: produtos, clientes, pedidos e vendedores.

Este conjunto de questões não foi pensado para treinar “decoreba de comando”. Ele foi construído para desenvolver uma competência muito mais valiosa: a capacidade de ler um problema de negócio em linguagem comum e traduzi-lo, com precisão, para uma consulta SQL correta. Em outras palavras, o desafio aqui não é apenas escrever SELECT; é aprender a pensar como alguém que sabe extrair informação de uma base de dados sem se perder na sintaxe nem distorcer a regra pedida.

Ao longo das atividades, você vai enfrentar dificuldades que parecem pequenas, mas que separam o iniciante de quem realmente começou a dominar SQL. Vai precisar identificar corretamente de qual tabela saem os dados, decidir quais colunas devem aparecer no resultado, transformar condições do enunciado em filtros no WHERE, e, principalmente, entender a lógica por trás de expressões com AND, OR, exclusões, intervalos e parênteses. Esse é o ponto em que muita gente tropeça: não por falta de comando, mas por não conseguir traduzir bem a regra do problema.

Se você conseguir resolver e explicar bem todas essas questões, terá desenvolvido uma base muito sólida de raciocínio em SQL. Isso significa que você saberá fazer algo fundamental em qualquer contexto profissional com dados: transformar perguntas em consultas. Você deixará de enxergar SQL como uma coleção de palavras reservadas e passará a enxergá-lo como uma linguagem de formulação lógica — uma forma de dizer ao banco, com exatidão, o que deve entrar, o que deve ficar de fora e como o resultado deve ser exibido.

Mais concretamente, você dominará a competência de ler enunciados com método. Vai aprender a separar rapidamente três camadas de qualquer problema: a origem dos dados (FROM), o que precisa ser retornado (SELECT) e as restrições de filtragem (WHERE). Isso parece simples, mas é exatamente a espinha dorsal de quase toda consulta SQL introdutória. Quem domina isso deixa de responder “por tentativa e erro” e começa a responder com intenção.

Você também desenvolverá a competência de filtragem lógica com precisão. Isso inclui usar corretamente operadores como igualdade, diferença, maior, menor, maior ou igual, além de saber quando duas condições são simultâneas (AND) e quando são alternativas (OR). Mais importante ainda: você começará a perceber que a ordem lógica importa, e que parênteses não são detalhe cosmético — são a diferença entre uma consulta correta e uma consulta que parece correta, mas devolve registros errados.

Outra skill que esse conjunto de questões desenvolve é a capacidade de validar mentalmente uma consulta antes mesmo de executá-la. Ao se acostumar a olhar a base e prever quais linhas deveriam entrar e quais deveriam ficar de fora, você passa a trabalhar com SQL de forma mais madura. Em vez de confiar cegamente no resultado retornado pela ferramenta, você cria o hábito de confrontar a query com a lógica do problema e com os dados disponíveis. Isso é um passo importante na formação de qualquer analista.

Há ainda uma competência menos visível, mas extremamente valiosa: a capacidade de explicar tecnicamente a sua própria resposta. Não basta escrever uma query que funcione. Neste material, o ideal é que você também consiga justificar: “usei esta tabela porque é dela que vêm os dados pedidos”, “selecionei essas colunas porque foram as solicitadas”, “usei AND porque as condições são simultâneas”, “usei parênteses porque havia mistura de AND e OR”. Quem aprende a fazer isso não apenas resolve a questão — demonstra entendimento real.

Se você atravessar todas essas atividades com segurança, terá desenvolvido as qualidades de um iniciante sólido em SQL: atenção ao enunciado, leitura lógica, precisão sintática, validação por evidência e capacidade de explicar o raciocínio. Em termos práticos, isso significa que você estará preparado para lidar com consultas simples e intermediárias em bases relacionais sem depender de adivinhação. E isso já é muito mais do que “saber um comando”: é começar a pensar como alguém que usa dados com método.

EX.01
Fundamentos mínimos de sintaxe
Operadores e regras que mais causam erro no TP3.

Comparações

  • = igual
  • <> diferente
  • >, <, >=, <=

Lógica booleana

  • AND: todas as condições precisam ser verdadeiras.
  • OR: basta uma condição verdadeira.
  • Com mistura de AND e OR, use parênteses para explicitar intenção.

Atalhos úteis

  • IN ('PR', 'RS') substitui estado = 'PR' OR estado = 'RS'.
  • BETWEEN 20 AND 40 inclui os extremos 20 e 40.
Na questão 15, o intervalo é aberto (> 20 e < 40). Portanto BETWEEN não atende exatamente o enunciado.
EX.02
Método fixo, erros comuns e validação mental
Roteiro único para qualquer questão do TP3.

Método fixo

  1. Identificar a tabela do enunciado.
  2. Identificar colunas de saída.
  3. Mapear condições obrigatórias e alternativas.
  4. Traduzir conectivos: "e" -> AND, "ou" -> OR.
  5. Usar parênteses quando houver mistura de conectivos.

Erros sintáticos comuns

  • Esquecer aspas em texto.
  • Usar == em vez de =.
  • Errar nome de coluna (ex.: nome em vez de nome_completo).
  • Ignorar precedência de AND sobre OR.

Validação mental rápida

  • Quais linhas entram?
  • Quais ficam de fora?
  • A query ficou permissiva demais ou restritiva demais?
EX.03
Grupo Produtos (Q1-Q4)
Cobertura integral das quatro questões da tabela produtos.

Q1

SELECT *
FROM produtos;

Listagem integral da tabela, sem filtros.

Q2

SELECT nome, preco_unitario
FROM produtos
WHERE categoria = 'Periféricos'
  AND estoque > 5;

Validação pelos dados: entram Teclado Mecânico, Webcam HD e Mesa Digitalizadora. Mouse Gamer fica fora por estoque 0.

Q3

SELECT *
FROM produtos
WHERE categoria = 'Periféricos';

Diferença para Q2: remove o filtro de estoque e traz todas as colunas.

Q4

SELECT nome, categoria, estoque
FROM produtos
WHERE preco_unitario > 500
  AND estoque < 10
  AND categoria <> 'Periféricos';

Validação pelos dados: entram Monitor 24pol, Cadeira Office e Notebook Pro.

EX.04
Grupo Clientes (Q5-Q8)
Cobertura integral das quatro questões da tabela clientes.

Q5

SELECT nome_completo, cidade
FROM clientes
WHERE estado = 'SP';

Validação pelos dados: Ana Silva, Carla Souza, Gabriel Santos e Larissa Melo.

Q6

SELECT *
FROM clientes
WHERE estado IN ('PR', 'RS')
   OR tipo_plano = 'Gold';

Entrada por alternativa: atende estado ou atende plano Gold.

Q7

SELECT nome_completo, cidade, estado
FROM clientes
WHERE tipo_plano <> 'Free'
  AND estado <> 'SP';

Mais restritiva que a Q8 porque mantém dois filtros simultâneos.

Q8

SELECT nome_completo, estado
FROM clientes
WHERE tipo_plano <> 'Free';

Versão simplificada da Q7: sai a regra de estado.

EX.05
Grupo Pedidos I (Q9-Q10)
Filtros combinados com valor, status e projeção de colunas.

Q9

SELECT *
FROM pedidos
WHERE valor_total > 1000
  AND (status = 'ENVIADO' OR status = 'PROCESSANDO');

Validação pelos dados: entram 5002 (1200, ENVIADO) e 5004 (5500, PROCESSANDO).

Sem parênteses, qualquer pedido PROCESSANDO poderia entrar, mesmo com valor baixo.

Q10

SELECT num_pedido, valor_total
FROM pedidos
WHERE status = 'ENTREGUE'
  AND valor_total > 300;

Validação pelos dados: entre pedidos ENTREGUE, só o 5006 (310) passa do corte.

EX.06
Grupo Pedidos II: ambiguidades (Q11-Q12)
Quando interpretação de regra é tão importante quanto sintaxe.

Q11

Interpretação escolhida: a regra principal é excluir cancelados; depois aplicar critério de valor ou data.

SELECT *
FROM pedidos
WHERE status <> 'CANCELADO'
  AND (valor_total >= 300 OR data_pedido > '2024-02-01');
Erro clássico: deixar sem parênteses e permitir cancelados após 2024-02-01.

Q12

Interpretação escolhida: o recorte de data vale para todo o conjunto, e depois abre alternativa por valor/status.

SELECT *
FROM pedidos
WHERE data_pedido >= '2024-01-20'
  AND (valor_total < 200 OR status = 'PROCESSANDO');

Validação pelos dados: entram 5008, 5009, 5010 e 5013.

EX.07
Grupo Vendedores (Q13-Q16)
Cobertura integral da tabela vendedores, incluindo intervalo aberto.

Q13

SELECT nome_vendedor, regiao
FROM vendedores
WHERE meta_atingida = 'SIM'
  AND regiao <> 'Sudeste';

Q14

SELECT nome_vendedor, vendas_mes
FROM vendedores
WHERE regiao = 'Sudeste'
  AND meta_atingida = 'SIM'
  AND vendas_mes > 40;

Validação pelos dados: entram Ricardo, Roberto e Beatriz; Gisele (38) fica fora.

Q15

SELECT *
FROM vendedores
WHERE vendas_mes > 20
  AND vendas_mes < 40;
Intervalo aberto: não substitua por BETWEEN 20 AND 40.

Q16

SELECT nome_vendedor, regiao
FROM vendedores
WHERE regiao IN ('Sul', 'Norte')
  AND meta_atingida = 'SIM';

Validação pelos dados: nesse recorte, entra somente Carlos.

EX.08
Diferenças entre questões parecidas
Evitar resposta por semelhança visual.
Q7 vs Q8: Q7 exige tipo_plano <> 'Free' e estado <> 'SP'; Q8 exige só o plano.
Q9 vs Q10: Q9 cruza valor alto + dois status; Q10 é só status ENTREGUE + valor > 300, com projeção de colunas.
Q11 vs Q12: ambas misturam conectivos; a diferença está na regra principal de contexto (excluir cancelados em Q11, cortar data em Q12).
Q14 vs Q15: Q14 é filtro por região/meta/corte superior; Q15 é intervalo aberto de vendas.
EX.09
Como justificar sua resposta
Modelo curto para explicar por que a query está correta.
  1. "Usei a tabela X porque o enunciado pede dados dessa entidade."
  2. "Projetei as colunas Y porque são exatamente as solicitadas."
  3. "No WHERE, usei AND para requisitos simultâneos e OR para alternativas."
  4. "Usei parênteses para controlar a precedência quando misturei AND e OR."
  5. "Validei com linhas concretas do dataset: quem entra e quem fica de fora."
-- Template de explicação rápida
-- Tabela: pedidos
-- Colunas: num_pedido, valor_total
-- Regra: status = 'ENTREGUE' e valor_total > 300
SELECT num_pedido, valor_total
FROM pedidos
WHERE status = 'ENTREGUE'
  AND valor_total > 300;
CHECK
Checklist final antes de entregar
Conferência objetiva para evitar erro de interpretação ou sintaxe.
  • Tabela correta do enunciado.
  • Colunas de saída corretas (incluindo nomes exatos como nome_completo e num_pedido).
  • Comparadores corretos (=, <>, >, <, etc.).
  • Uso correto de AND/OR com parênteses quando necessário.
  • Validação por evidência: ao menos 2 linhas que entram e 2 que não entram.
Com este roteiro, a página deixa de ser resumo introdutório e passa a cobrir o papel de material completo do TP3.