Considere a seguinte consulta SQL:select distinct nome_clien...

Próximas questões
Com base no mesmo assunto
Q113025 Banco de Dados
Considere a seguinte consulta SQL:

select distinct nome_cliente
from devedor
where nome_cliente in (select nome_cliente
Fromdepositante);

Sobre ela, é correto afirmar que:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A - há uma subconsulta aninhada.

Vamos entender o conceito aplicado nesta questão. Uma subconsulta, também conhecida como subquery ou consulta aninhada, ocorre quando temos uma consulta dentro de outra. No SQL, isso é comum quando queremos comparar resultados de uma tabela com resultados de outra, ou mesmo realizar filtragens mais complexas. A subconsulta é executada primeiro e o seu resultado é utilizado pela consulta externa, que é a principal.

No exemplo dado na questão, a consulta interna select nome_cliente From depositante irá selecionar todos os nomes de clientes da tabela depositante. Já a consulta externa faz uso do operador IN para verificar quais nome_cliente da tabela devedor estão presentes no resultado da subconsulta. O uso do distinct na consulta externa ajuda a garantir que cada nome de cliente seja listado uma única vez, evitando duplicatas.

O motivo pelo qual a Alternativa A é a correta é que a consulta apresentada claramente possui uma consulta dentro de outra, ou seja, uma subconsulta. A subconsulta está entre parênteses e é usada como parte da cláusula WHERE na consulta principal.

Com relação às outras opções:

  • A Alternativa B está incorreta porque o distinct irá, de fato, retornar nomes distintos, mas a questão afirma como sendo um número total, o que pode ser confuso, pois o número total pode ser interpretado como a contagem de todos os registros, sem a aplicação do distinct.
  • A Alternativa C está incorreta porque o SQL não faz um teste automático para exclusão de valores nulos em uma cláusula IN. Se a subconsulta retornar valores nulos, eles serão considerados na consulta principal.
  • A Alternativa D está incorreta porque não há erro de sintaxe na utilização do operador IN. Ele está sendo usado corretamente para comparar valores de duas tabelas.
  • A Alternativa E está incorreta porque não há uso de funções de agrupamento na consulta. Funções como SUM(), MAX(), MIN(), AVG(), e COUNT() são exemplos de funções de agrupamento, e nenhuma delas aparece na consulta em questão.

Espero que essa explicação tenha ajudado a esclarecer o tema e a entender por que a alternativa A é a resposta correta para a questão. Continue estudando e qualquer dúvida, estou à disposição!

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

A resposta correta é:

A

há uma subconsulta aninhada.

A consulta SQL apresentada contém uma subconsulta aninhada, que é a parte da consulta entre parênteses após o operador "in". A subconsulta "select nome_cliente from depositante" é executada primeiro e retorna uma lista de nomes de clientes da tabela "depositante", que é usada como critério na cláusula "where" da consulta principal para filtrar os registros da tabela "devedor" que possuem nomes de clientes presentes na lista retornada pela subconsulta.

As demais afirmativas estão incorretas:

B

A instrução "distinct" retorna apenas os valores únicos dos nomes de clientes encontrados na tabela "devedor".

C

Não há evidências de que seja realizado um teste automático para exclusão de valores nulos na consulta.

D

Não há erro de sintaxe na consulta apresentada.

E

Não há utilização de função de agrupamento na consulta apresentada.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo