Explicação Questão 13 - TCE-SP

A consulta que retorna os nomes dos funcionários com salário maior do que os salários de Maria e Pedro é:


A) SELECT nome FROM funcionario  WHERE salario > ANY

   (SELECT salario FROM funcionario WHERE nome IN ('Maria','Pedro'))

B) SELECT nome FROM funcionario

   WHERE salario > (SELECT salario FROM funcionario WHERE nome IN ('Maria','Pedro'))

C) SELECT nome FROM funcionario

   WHERE salario > IN (SELECT salario FROM funcionario WHERE nome IN ('Maria','Pedro'))

D) SELECT nome FROM funcionario

   WHERE salario > ALL

   (SELECT salario FROM funcionario WHERE nome IN ('Maria','Pedro'))

E) SELECT nome FROM funcionario

   WHERE salario > SUM (SELECT salario FROM funcionario WHERE nome IN ('Maria','Pedro'))


Comentário:

A letra A está quase correta. O erro da questão é o uso da função ANY. Esta função irá retornar o nome dos funcionários com salário maior do que o de Maria ou de Pedro. Uma diferença sutil, mas que determinará o acerto ou o erro do candidato!

A letra B não possui uma sintaxa correta. Está faltando a função ALL, pois estamos comparando um salário com um ou mais salários.

A letra C não possui uma sintaxa correta. A função IN sendo usada de forma inadequada.

A letra D está correta. Ela retornará exatamente o que queremos. Os nomes dos funcionários com salário maior do que o de Maria e de Pedro.

A letra E está errada. A função SUM está sendo usada de forma indevida. Ela retorna uma soma dos valores, e deverá ser usada no comendo SELECT.

Gabarito D.