Introdução a Visualização de Dados e SQL
Material autossuficiente para resolver e justificar Q1-Q16 com validação por dados reais.
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.
Comparações
=igual<>diferente>,<,>=,<=
Lógica booleana
AND: todas as condições precisam ser verdadeiras.OR: basta uma condição verdadeira.- Com mistura de
ANDeOR, use parênteses para explicitar intenção.
Atalhos úteis
IN ('PR', 'RS')substituiestado = 'PR' OR estado = 'RS'.BETWEEN 20 AND 40inclui os extremos 20 e 40.
> 20 e < 40). Portanto BETWEEN não atende exatamente o enunciado.Método fixo
- Identificar a tabela do enunciado.
- Identificar colunas de saída.
- Mapear condições obrigatórias e alternativas.
- Traduzir conectivos: "e" ->
AND, "ou" ->OR. - 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.:
nomeem vez denome_completo). - Ignorar precedência de
ANDsobreOR.
Validação mental rápida
- Quais linhas entram?
- Quais ficam de fora?
- A query ficou permissiva demais ou restritiva demais?
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.
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.
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).
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.
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');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.
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;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.
tipo_plano <> 'Free' e estado <> 'SP'; Q8 exige só o plano.- "Usei a tabela X porque o enunciado pede dados dessa entidade."
- "Projetei as colunas Y porque são exatamente as solicitadas."
- "No WHERE, usei AND para requisitos simultâneos e OR para alternativas."
- "Usei parênteses para controlar a precedência quando misturei AND e OR."
- "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;- Tabela correta do enunciado.
- Colunas de saída corretas (incluindo nomes exatos como
nome_completoenum_pedido). - Comparadores corretos (
=,<>,>,<, etc.). - Uso correto de
AND/ORcom parênteses quando necessário. - Validação por evidência: ao menos 2 linhas que entram e 2 que não entram.