SEMEF Manaus - AM - Técnico de Tecnologia da Informação da Fazenda Municipal
Atribuiu-se uma tarefa a um técnico para, a partir da seguinte tabela de um banco de dados relacional: Item (ID, Nome, Tipo, Valor), gerar o comando SQL ANSI para obter o valor médio de cada tipo de item, apenas para aqueles tipos que comecem com a letra 'S'. O comando SQL solicitado é
ASELECT Tipo, ∑ Valor/Number(Tipo);FROM ItemWHERE Tipo IS 'S%COUNT Tipo;
BSELECT Tipo, ∑ Valor/Number (Tipo)FROM ItemORDER BY Tipo ( 'S%');
CSELECT Tipo, AVG (Valor)FROM ItemGROUP BY Tipo ('S%');
DSELECT Tipo, AVG (Valor)FROM ItemWHERE Tipo LIKE 'S%'GROUP BY Tipo;
ESELECT Tipo, Total (Valor)/Number (Tipo)FROM ItemWHERE Tipo START 'S%'HAVING Tipo IN GROUP;
Revelar gabarito e comentário▾
GabaritoD — SELECT Tipo, AVG (Valor)
FROM Item
WHERE Tipo LIKE 'S%'
GROUP BY Tipo;
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 LIKE
Gabarito: letra D. A consulta SQL para obter o valor médio por tipo de item, considerando apenas os tipos que começam com 'S', deve utilizar a função agregada AVG, o filtro WHERE com o operador LIKE 'S%' e a cláusula GROUP BY Tipo. A alternativa D reproduz exatamente essa sintaxe.
PEGA ESSA DICA!
A ordem correta das cláusulas em uma consulta SQL com agregação é: SELECT com funções agregadas → FROM → WHERE (filtra linhas antes da agregação) → GROUP BY (agrupa) → HAVING (filtra grupos). Sempre coloque a condição sobre os valores das colunas no WHERE, nunca dentro do GROUP BY.
1SELECT (funções agregadas)
2FROM (tabela)
3WHERE (filtra linhas)
4GROUP BY (agrupa)
5HAVING (filtra grupos)
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Usa ∑ Valor/Number(Tipo) que não é sintaxe SQL válida. O correto é utilizar a função AVG(). Além disso, o WHERE está incorreto (Tipo IS 'S%' e COUNT Tipo solto).
Alternativa B — ❌ Incorreta
Novamente usa ∑ Valor/Number (Tipo), inválido. E ORDER BY Tipo ( 'S%') não filtra; ORDER BY apenas ordena, não faz filtro. O filtro correto é WHERE Tipo LIKE 'S%'.
Alternativa C — ❌ Incorreta
Embora use AVG(Valor) e GROUP BY Tipo, a condição de filtro foi colocada incorretamente dentro do GROUP BY como ('S%'). O filtro deve ser feito com WHERE antes do GROUP BY.
Alternativa D — ✅ Correta ⟵ GABARITO
Sintaxe completa: SELECT Tipo, AVG(Valor) FROM Item WHERE Tipo LIKE 'S%' GROUP BY Tipo;. O LIKE 'S%' seleciona os tipos que começam com 'S', o AVG(Valor) calcula a média e o GROUP BY Tipo agrupa por tipo, gerando uma linha para cada tipo.
Alternativa E — ❌ Incorreta
Usa Total (Valor)/Number (Tipo) que não existe no SQL ANSI. O operador START não é válido; o correto é LIKE. A cláusula HAVING Tipo IN GROUP está fora de contexto – HAVING é usado após GROUP BY, mas aqui não há agregação correta.