Auditor de Controle Externo - Controle Externo - Específica de Tecnologia da Informação - Sistemas, Engenharia de Dados e Ciência de Dados (Manhã)
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:
ASELECT VendedorID FROM VendasWHERE ValorVenda > 10000;
BSELECT DISTINCT VendedorID FROM VendasGROUP BY VendedorIDHAVING ValorVenda > 10000;
CSELECT VendedorID FROM VendasWHERE SUM(ValorVenda) > 10000;
DSELECT DISTINCT VendedorID FROM VendasWHERE ValorVenda > 10000;
ESELECT VendedorID FROM VendasWHERE MAX(ValorVenda) > 10000GROUP BY VendedorID;
Revelar gabarito e comentário▾
GabaritoD — SELECT DISTINCT VendedorID FROM Vendas
WHERE ValorVenda > 10000;
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 – Filtragem com DISTINCT e WHERE
Gabarito: letra D. A consulta correta para listar sem duplicatas os vendedores que realizaram vendas acima de 10.000 é SELECT DISTINCT VendedorID FROM Vendas WHERE ValorVenda > 10000;. O DISTINCT elimina repetições do VendedorID, e a cláusula WHERE filtra as linhas cujo ValorVenda seja superior a 10.000. Não há necessidade de agregação (GROUP BY, HAVING) nem de função de agregação, pois a condição é sobre cada linha individualmente.
Alternativa A — ❌ Incorreta
SELECT VendedorID FROM Vendas WHERE ValorVenda > 10000; – Embora a condição WHERE esteja correta, a consulta não remove duplicatas: se um vendedor tiver mais de uma venda acima de 10.000, seu ID aparecerá repetido. O enunciado exige listagem "sem duplicatas", portanto é necessário DISTINCT.
Alternativa B — ❌ Incorreta
SELECT DISTINCT VendedorID FROM Vendas GROUP BY VendedorID HAVING ValorVenda > 10000; – Mistura conceitos de forma inválida. GROUP BY é usado para agrupar linhas, e HAVING filtra grupos, não linhas individuais. Além disso, ValorVenda aparece no HAVING sem função de agregação, o que gera erro sintático na maioria dos SGBDs. O correto seria usar somente WHERE para filtrar linhas e DISTINCT para eliminar duplicatas.
Alternativa C — ❌ Incorreta
SELECT VendedorID FROM Vendas WHERE SUM(ValorVenda) > 10000; – SUM é uma função de agregação e não pode ser usada diretamente no WHERE sem estar em uma subconsulta ou sem GROUP BY e HAVING. Essa consulta resulta em erro de execução. A intenção parece ser somar os valores por vendedor, mas a sintaxe está incorreta.
Alternativa D — ✅ Correta ⟵ GABARITO
SELECT DISTINCT VendedorID FROM Vendas WHERE ValorVenda > 10000; – Atende exatamente ao requisito: WHERE filtra as vendas com valor superior a 10.000; DISTINCT garante que cada VendedorID apareça uma única vez, eliminando duplicatas.
Alternativa E — ❌ Incorreta
SELECT VendedorID FROM Vendas WHERE MAX(ValorVenda) > 10000 GROUP BY VendedorID; – A função MAX no WHERE sem subconsulta é inválida. Além disso, MAX retorna o maior valor de venda em toda a tabela (ou no grupo, se houver GROUP BY), mas a intenção é avaliar cada venda individualmente. A cláusula GROUP BY está posicionada de forma incorreta (deveria vir antes do HAVING, não após o WHERE).
PEGA ESSA DICA!
Em questões de SQL que pedem valores "sem duplicatas", o comando-chave é SELECT DISTINCT. Quando a condição é sobre o valor de cada linha (e não sobre uma agregação), use WHERE; se a condição envolver agregação (soma, média, máximo por grupo), aí sim use GROUP BY + HAVING. Nunca misture WHERE com funções de agregação diretamente – isso gera erro ou resultado inesperado.