Em um banco de dados SQL existe uma tabela chamada Vendas com as colunas VendaID, VendedorID e ValorVenda. Para listar, sem duplicatas, o VendedorID de todos os vendedores que tenham realizado vendas superiores ao valor de 10.000, devemos usar a seguinte consulta:
- A)SELECT VendedorID FROM Vendas WHERE ValorVenda > 10000;
Errada, porque não elimina duplicatas de VendedorID, então um mesmo vendedor pode aparecer várias vezes.
- B)SELECT DISTINCT VendedorID FROM Vendas GROUP BY VendedorID HAVING ValorVenda > 10000;
Errada, porque mistura GROUP BY com HAVING de forma inadequada e ainda usa HAVING com uma coluna sem agregação.
- C)SELECT VendedorID FROM Vendas WHERE SUM(ValorVenda) > 10000;
Errada, porque SUM é função de agregação e não pode ser usada diretamente no WHERE desse jeito.
- D)SELECT DISTINCT VendedorID FROM Vendas WHERE ValorVenda > 10000;
Certa, porque filtra as vendas acima de 10.000 com WHERE e remove repetidos com DISTINCT.
- E)SELECT VendedorID FROM Vendas WHERE MAX(ValorVenda) > 10000 GROUP BY VendedorID;
Errada, porque MAX com GROUP BY não está corretamente aplicado para o objetivo da consulta e a sintaxe está inadequada.
Gabarito: D
Quando a questão pede "listar, sem duplicatas, o VendedorID" de quem fez vendas acima de 10.000, você precisa juntar duas ideias: filtrar as linhas pelo valor da venda e depois eliminar repetidos. Em SQL, o filtro linha a linha é feito com WHERE, e a retirada de duplicatas é feita com DISTINCT. Simples, sem drama de novela: primeiro você seleciona apenas as vendas com ValorVenda maior que 10000, depois pega os VendedorID sem repetição. Por isso, a consulta correta é SELECT DISTINCT VendedorID FROM Vendas WHERE ValorVenda > 10000;. Ela traz todos os vendedores que tenham pelo menos uma venda acima de 10.000, sem repetir o mesmo vendedor várias vezes se ele tiver feito mais de uma venda nessas condições. As outras alternativas escorregam em pontos clássicos. SUM e MAX são funções de agregação e exigiriam GROUP BY e, em alguns casos, HAVING bem usados. Além disso, HAVING serve para filtrar grupos depois do agrupamento, não para inventar comparação solta com uma coluna que nem está agregada. Em SQL, a ordem lógica ajuda muito: WHERE filtra antes, DISTINCT elimina duplicatas depois. Então, o gabarito D está correto porque faz exatamente o que o enunciado pediu: filtra vendas superiores a 10.000 e retorna os vendedores sem repetição.