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.
