O RH da empresa deseja emitir um relatório de todos os funcionários que ganham comissão. Deseja mostrar o nome, salário e comissão organizando os dados por salário de forma descendente. Considerando a existência de um banco de dados Oracle aberto e em condições ideais, que possui uma tabela chamada Funcionario com os campos nome, cargo, salario e comissao, a instrução SQL que deverá ser utilizada é
ASELECT ALL nome, salario, comissao FROM funcionario WHERE comissao IS NOT EMPTY ORDER BY salario DESCENDING;
BSELECT nome, salario, comissao FROM funcionario WHERE comissao IS NOT NULL ORDER BY salario DESC;
CSELECT nome, salario, comissao FROM funcionario WHERE NOT_EMPTY(comissao) ORDER BY salario DESC;
DSELECT * FROM funcionario WHERE comissao IS NOT NULL ORDER BY salario DESC;
ESELECT ONLY nome, salario, comissao FROM funcionario WHERE NOT_NULL(comissao) ORDER BY salario DESC;
Revelar gabarito e comentário▾
GabaritoB — SELECT nome, salario, comissao FROM funcionario WHERE comissao IS NOT NULL ORDER BY salario DESC;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
SQL: Consulta com condição de nulidade e ordenação
Gabarito: letra B. A alternativa B emprega a sintaxe correta do SQL: SELECT nome, salario, comissao FROM funcionario WHERE comissao IS NOT NULL ORDER BY salario DESC. Ela filtra registros onde a comissão não é nula (exatamente o que o RH deseja), lista apenas as colunas solicitadas e ordena por salário de forma decrescente. As demais alternativas contêm comandos inválidos (NOT EMPTY, DESCENDING, NOT_EMPTY(), NOT_NULL()) ou selecionam colunas a mais (SELECT *), desatendendo ao pedido do enunciado.
Alternativa A — ❌ Incorreta
Utiliza IS NOT EMPTY (inexistente no SQL) e DESCENDING (o correto é DESC). O ALL é opcional, mas não invalida. O erro principal é a condição de filtro e a palavra de ordenação.
Alternativa B — ✅ Correta ⟵ GABARITO
Sintaxe perfeitamente válida: WHERE comissao IS NOT NULL para filtrar funcionários com comissão, ORDER BY salario DESC para ordenar decrescente. Atende integralmente ao requisito.
Alternativa C — ❌ Incorreta
A função NOT_EMPTY() não existe no SQL. O operador correto para verificar não nulidade é IS NOT NULL.
Alternativa D — ❌ Incorreta
Embora WHERE comissao IS NOT NULL e a ordenação estejam corretos, o uso de SELECT * traz todas as colunas da tabela (incluindo cargo e outras). O enunciado pede explicitamente apenas nome, salario, comissao. Portanto, a consulta não atende ao que foi solicitado.
Alternativa E — ❌ Incorreta
SELECT ONLY não é um comando SQL válido, e NOT_NULL(comissao) não é uma função. A forma correta é IS NOT NULL.
PEGA ESSA DICA!
Em concursos, fique atento ao uso de * vs. lista explícita de colunas. Se a questão especifica quais colunas devem ser exibidas, não use * mesmo que pareça funcionar. Sempre confira se os nomes dos operadores e palavras‑chave seguem o padrão SQL (ex.: IS NOT NULL, DESC, AS).