Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FCC 2019

Banco de DadosSQL
Código
fc056956
Banca
FCC
Órgão
SEMEF de Manaus - AM
Ano
2019
Cargo
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 é
  1. ASELECT Tipo, ∑ Valor/Number(Tipo);FROM ItemWHERE Tipo IS 'S%COUNT Tipo;
  2. BSELECT Tipo, ∑ Valor/Number (Tipo)FROM ItemORDER BY Tipo ( 'S%');
  3. CSELECT Tipo, AVG (Valor)FROM ItemGROUP BY Tipo ('S%');
  4. DSELECT Tipo, AVG (Valor)FROM ItemWHERE Tipo LIKE 'S%'GROUP BY Tipo;
  5. 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 → FROMWHERE (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.

  1. 1SELECT (funções agregadas)
  2. 2FROM (tabela)
  3. 3WHERE (filtra linhas)
  4. 4GROUP BY (agrupa)
  5. 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.

Gabarito: letra D.

Link permanente: /questoes/fc056956