Em um banco de dados SQL, suponha que existe uma tabela chamada Vendas com as colunas VendaID, VendedorID e ValorVenda. Para listar, sem duplicatas, os VendedorID de todos os vendedores que tenham realizado vendas superiores ao valor de 10.000, poderíamos usar a seguinte consulta:
- A)SELECT VendedorID FROM Vendas WHERE ValorVenda > 10000;
Errada, porque traz VendedorID de vendas acima de 10.000, mas não elimina duplicidades, então o mesmo vendedor pode aparecer mais de uma vez.
- B)SELECT DISTINCT VendedorID FROM Vendas GROUP BY VendedorID HAVING ValorVenda > 10000;
Errada, porque a cláusula HAVING está mal usada aqui: sem agregação adequada, a condição sobre ValorVenda não resolve o pedido e ainda mistura GROUP BY com uma lógica incorreta.
- C)SELECT VendedorID FROM Vendas WHERE SUM(ValorVenda) > 10000;
Errada, porque SUM(ValorVenda) não pode ser usado no WHERE dessa forma; funções de agregação não são permitidas diretamente nessa cláusula.
- D)SELECT DISTINCT VendedorID FROM Vendas WHERE ValorVenda > 10000;
Certa, porque filtra as vendas com ValorVenda > 10000 e o DISTINCT remove repetição de VendedorID.
- E)SELECT VendedorID FROM Vendas WHERE MAX(ValorVenda) > 10000 GROUP BY VendedorID;
Errada, porque MAX(ValorVenda) não pode ser usado no WHERE dessa forma e a estrutura com GROUP BY não está correta para o objetivo proposto.
Gabarito: D
A lógica aqui é simples: o enunciado quer listar os vendedores que fizeram alguma venda acima de 10.000, e sem repetir nomes. Em SQL, quando você quer filtrar linha a linha, usa-se WHERE. Então basta trazer o VendedorID das linhas em que ValorVenda seja maior que 10000. O detalhe importante é o sem duplicatas: como um vendedor pode aparecer em mais de uma linha, entra o DISTINCT para eliminar repetições. Pense assim: WHERE faz a peneira antes de mostrar os dados, e DISTINCT faz a limpeza das repetições depois. Não tem mistério de somar, agrupar ou inventar moda aqui. A consulta correta é justamente a que seleciona VendedorID com filtro em ValorVenda > 10000 e ainda remove duplicidades. Por isso o gabarito é a alternativa D: SELECT DISTINCT VendedorID FROM Vendas WHERE ValorVenda > 10000. Ela atende exatamente aos dois requisitos do enunciado: filtra as vendas acima de 10.000 e lista os vendedores sem repetição. Um cuidado clássico em SQL é não confundir filtro de linha com agregação. Funções como SUM, MAX e cláusulas como HAVING entram quando você quer analisar grupos, e não quando a pergunta pede apenas cada registro individualmente.