Suponha que se deseja realizar a seguinte busca no banco de...
Encontrar os nomes de todas as agências que não sejam da cidade de Belo Horizonte e que tenham ativos maiores do que pelo menos uma agência de Belo Horizonte.
Considerando-se que existem várias agências na cidade de Belo Horizonte, é correto afirmar que a consulta SQL que realiza essa busca é
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: A
Vamos entender o que está sendo solicitado na questão e por que a alternativa A é a correta. A questão pede para encontrar os nomes das agências que não estão localizadas na cidade de Belo Horizonte e que possuem um valor de ativos maior do que ao menos uma agência localizada em Belo Horizonte. Para isso, precisamos utilizar o SQL, que é uma linguagem de consulta estruturada, para buscar os dados em um banco de dados.
O conhecimento necessário para resolver essa questão inclui entender o conceito de subconsultas (ou subqueries), a cláusula WHERE para filtrar registros, o operador <> para comparação de desigualdade, e a função DISTINCT para garantir que os resultados sejam únicos, sem duplicatas.
A consulta correta deve fazer um auto-relacionamento da tabela agência, comparando os ativos de agências não localizadas em Belo Horizonte com os ativos de agências em Belo Horizonte. Deve-se garantir que pelo menos uma agência de Belo Horizonte tenha ativos menores do que a agência que não está em Belo Horizonte.
Justificativa para a alternativa A:
A alternativa A é correta porque utiliza a estratégia de auto-relacionamento, comparando registros da mesma tabela agência sob dois alias diferentes, T e S. O trecho T.ativo > S.ativo
assegura que estamos selecionando agências (alias T) com ativos maiores do que as de Belo Horizonte (alias S). Além disso, os filtros S.cidade_agencia = 'Belo Horizonte'
e T.cidade_agencia <> 'Belo Horizonte'
garantem que estamos comparando as agências de outras cidades com as de Belo Horizonte, conforme solicitado pelo enunciado.
O uso do DISTINCT garante que cada nome de agência seja listado apenas uma vez, mesmo que se qualifique em comparação com múltiplas agências de Belo Horizonte, evitando duplicidades no resultado final.
Entender a lógica por trás dessa consulta é essencial. Ela cria um cruzamento onde cada agência é comparada com todas as outras, mas devido aos filtros aplicados, só serão retornadas aquelas que atendem aos critérios especificados: não estar em Belo Horizonte e ter ativos maiores que pelo menos uma agência que esteja em Belo Horizonte.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
GABARITO A
No caso usando o alias T é a agência que não seja de BH e que tenha ativos maiores que uma agência de BH.
Logo T.ativo > S.ativo (elimina a B)
S.cidade = BH
T.cidade <> BH (diferente de bh)
D. a virgula antes do where torna errada, não olhei mais nada depois
Vale olhar se os acentos são suportados pelo SQL
O erro da C é que o SELECT interno deve retornar vários elementos. Eu não posso fazer "x > (1, 2, 3, ...)"
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo