Considere as relações Empregados (codEmp, nome, salario, cod...

Próximas questões
Com base no mesmo assunto
Q2262708 Banco de Dados
Considere as relações Empregados (codEmp, nome, salario, codDepto) e Departamentos (codDepto, nome), tal que codDepto em Empregados é uma chave estrangeira que faz referência à relação Departamentos. Considere também a seguinte consulta formulada na linguagem SQL: 
   SELECT e1.nome    FROM Empregados e1, Empregados e2    WHERE e2.codDepto IN (SELECT codDepto                                              FROM Departamentos                                             WHERE nome = ‘Recursos Humanos’                                             OR nome = ‘Vendas’)     AND e1.salario > e2.salario;
É CORRETO afirmar que:  
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: A

A alternativa correta é a A, que afirma que a consulta retorna nomes de empregados que recebem salário superior ao salário de algum empregado que trabalha nos departamentos de Recursos Humanos e Vendas. Vamos entender por que isso está correto.

A consulta SQL apresentada é um exemplo de subconsulta correlacionada. Isso significa que ela utiliza uma subconsulta (o SELECT interno) que depende de valores obtidos da consulta externa. Na subconsulta, selecionamos os códigos dos departamentos com nome 'Recursos Humanos' ou 'Vendas'. Já na consulta externa, comparamos esse resultado com os códigos de departamento dos empregados e buscamos por aqueles empregados (e1) que têm um salário maior do que algum empregado (e2) desses departamentos.

Essa comparação de salários é feita por meio da condição e1.salario > e2.salario, que se traduz na condição para que o nome do empregado seja retornado. Como a consulta não requer que o salário de e1 seja superior a todos os salários dos empregados dos departamentos especificados, mas sim a pelo menos um deles, isso valida a escolha da alternativa A.

É importante notar que as demais alternativas não estão corretas pelos seguintes motivos:

  • A alternativa B menciona que a consulta retorna empregados com salário superior a todos os empregados dos departamentos mencionados, o que não é o caso, pois a condição é atendida se e1 tiver salário maior que pelo menos um empregado e2 dos departamentos.
  • A alternativa C incorretamente sugere que a consulta exclui empregados dos departamentos de Recursos Humanos e Vendas, quando na verdade não há tal condição de exclusão.
  • A alternativa D está errada pois é perfeitamente válido em SQL ter múltiplas instâncias da mesma tabela na cláusula FROM, contanto que elas sejam devidamente aliasadas (como e1 e e2 no nosso caso).

Para resolver essa questão, é essencial entender como funcionam as subconsultas correlacionadas, o conceito de chave estrangeira, e como a sintaxe SQL permite comparar informações de várias tabelas ao mesmo tempo. Com esses conhecimentos, fica mais fácil identificar a lógica por trás das condições estabelecidas na consulta e chegar à alternativa correta.

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 (A).

A consulta retorna nomes de empregados que recebem salário superior ao salário de algum empregado que trabalha nos departamentos de Recursos Humanos e Vendas.

1º A cláusula WHERE seleciona todos os empregados da tabela Empregados que trabalham nos departamentos de Recursos Humanos e Vendas.

2º A cláusula WHERE seleciona todos os empregados da tabela Empregados que recebem salário superior ao salário de algum empregado selecionado na cláusula WHERE anterior (ou seja, da 1º seleção).

Clique para visualizar este comentário

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