SQL: Filtro de Registros com WHERE
Gabarito: letra A. A consulta que retorna exatamente as duas linhas exibidas (idFilial=1 com vendasFilial=120000) é aquela que combina as condições vendasFilial > 100000 e idFilial = 1 com o operador AND. A alternativa A é a única que expressa essa combinação corretamente.
A questão testa a compreensão dos operadores lógicos (AND, OR) e da filtragem com WHERE. O resultado esperado contém duas linhas: ambas com idFilial = 1 e vendasFilial igual a 120000 (que é > 100000). A condição deve selecionar apenas os registros que atendem simultaneamente aos dois critérios.
Alternativa A — ✅ Correta ⟵ GABARITO
SELECT * FROM filial WHERE vendasFilial >100000 AND idFilial=1; Aplica o operador AND, exigindo que ambas as condições sejam verdadeiras. A tabela Filial contém os registros (1,1, Campinas, 120000) e (1,3, São Paulo, 120000) que satisfazem vendasFilial > 100000 e idFilial = 1. Os demais registros (idFilial 1 com vendas menores, ou idFilial diferentes) são excluídos, gerando exatamente as duas linhas apresentadas.
Alternativa B — ❌ Incorreta
SELECT idFilial, idLoja, cidadeFilial, vendasFilial FROM filial WHERE vendasFilial<100000 AND idFilial=1; Usa vendasFilial < 100000, mas os registros exibidos têm vendasFilial = 120000, que não atendem a essa condição. A consulta retornaria apenas as filiais da loja 1 com vendas inferiores a 100000 (por exemplo, idFilial=1, idLoja=2? Não, esse é de Campinas com 35000, mas idLoja=2, idFilial=1? Na verdade, o registro (1,2, Campinas, 35000) tem idFilial=1, idLoja=2 e vendas 35000 — atenderia a condição, mas não está no resultado apresentado. Portanto, produziria um conjunto diferente.
Alternativa C — ❌ Incorreta
SELECT idFilial, idLoja, cidadeFilial, vendasFilial FROM filial WHERE (vendasFilial>100000 OR idFilial=1); Usa o operador OR, que retorna registros que atendam pelo menos uma das condições. Isso incluiria todos os registros com idFilial = 1 (independentemente do valor de vendas) e todos com vendasFilial > 100000 (independentemente do idFilial). O resultado conteria várias linhas adicionais (por exemplo, (2,1, Salvador, 240000), (3,1, Rio de Janeiro, 60000), (4,1, Curitiba, 40000) — todos com idFilial=1 — e possivelmente outros), muito além das duas apresentadas.
Alternativa D — ❌ Incorreta
SELECT *.* FROM filial WHERE vendasFilial<100000 && idFilial=1; Apresenta dois erros: (1) a sintaxe *.* é inválida no SQL padrão (o correto seria apenas * ou tabela.*); (2) a condição de venda é vendasFilial < 100000, que não corresponde ao valor 120000 dos registros exibidos. Mesmo se corrigida a sintaxe, a cláusula WHERE estaria errada.
Alternativa E — ❌ Incorreta
SELECT FROM filial WHERE vendasFilial>100000 AND idFilial=1; Falta a lista de colunas ou o caractere * após SELECT. Em SQL, SELECT exige uma expressão de seleção (colunas ou *). A instrução é sintaticamente inválida e não executaria.
Gabarito: letra A.