Analista em Gestão Especializado de Defensoria - Analista de Banco de Dados
Seja a tabela Vendas de um banco de dados relacional:Vendas (ID, Nome-Item, Valor, Descrição, Fabricante)O comando SQL-ANSI para obter o nome do fabricante e o valor médio dos itens de cada fabricante, apenas no caso de valores médios superiores a R$ 100,00 é:
ASELECT Fabricante, MED (Valor)FROM VendasWHERE MED (Valor) > 100.00
GabaritoD — SELECT Fabricante, AVG (Valor)
FROM Vendas
GROUP BY Fabricante
HAVING AVG (Valor) > 100.00
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: Consultas com Agregação e Filtro de Grupos
Gabarito: letra D. Para obter o nome do fabricante e o valor médio dos itens de cada fabricante, mas apenas quando a média for superior a R$ 100,00, devemos utilizar GROUP BY Fabricante e a cláusula HAVING para filtrar o resultado da função de agregação AVG(Valor). A função AVG é a padrão do SQL para calcular média; MED não existe. Além disso, WHERE não pode conter funções de agregação diretas.
A banca testa o conhecimento das cláusulas de agrupamento e filtro de grupos, um tópico clássico. Observe que HAVING atua sobre os grupos após a agregação, enquanto WHERE filtra linhas antes.
1FROM Vendas
2WHERE (filtra linhas)
3GROUP BY Fabricante
4AVG(Valor) (agrega)
5HAVING AVG > 100 (filtra grupos)
6SELECT Fabricante, AVG
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Usa MED(Valor), que não é uma função de agregação válida em SQL padrão (o correto é AVG). Além disso, coloca WHERE MED(Valor) > 100.00, o que é inválido porque WHERE não pode conter funções de agregação.
Alternativa B — ❌ Incorreta
Agrupa por Valor (GROUP BY Valor), não por Fabricante. A cláusula GROUP BY deve conter a(s) coluna(s) que definem os grupos. Além disso, WHERE AVG(Valor) > 100.00 está no lugar errado – deveria ser HAVING.
Alternativa C — ❌ Incorreta
Usa MED(Valor) (função inválida) e GROUPING Fabricante WITH AVG(Valor) > 100.00 – sintaxe completamente fora do padrão SQL. Não há cláusula GROUPING com WITH.
Alternativa D — ✅ Correta ⟵ GABARITO
Sintaxe perfeita: SELECT Fabricante, AVG(Valor) FROM Vendas GROUP BY Fabricante HAVING AVG(Valor) > 100.00. Agrupa por fabricante, calcula a média de cada grupo e filtra apenas os grupos cuja média supera R$ 100,00.
Alternativa E — ❌ Incorreta
JOIN Fabricante AND AVG(Valor) > 100.00 é absurdo. JOIN é usado para combinar tabelas, não para agrupar ou filtrar. Faltam GROUP BY e HAVING.
PEGA ESSA DICA!
Lembre-se do fluxo: WHERE → GROUP BY → HAVING → ORDER BY. O WHERE nunca vem depois do GROUP BY e não pode conter funções de agregação. O HAVING é o WHERE dos grupos.