Pular para o conteúdo principal

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

Banco de DadosSQL
Código
fc044181
Banca
FCC
Órgão
DPE-AM
Ano
2018
Cargo
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 é:
  1. ASELECT Fabricante, MED (Valor)FROM VendasWHERE MED (Valor) > 100.00
  2. BSELECT Fabricante, AVG (Valor)FROM VendasGROUP BY ValorWHERE AVG (Valor) > 100.00
  3. CSELECT Fabricante, MED (Valor)FROM VendasGROUPING Fabricante WITH AVG (Valor) > 100.00
  4. DSELECT Fabricante, AVG (Valor)FROM VendasGROUP BY FabricanteHAVING AVG (Valor) > 100.00
  5. ESELECT Fabricante, AVG (Valor)FROM VendasJOIN Fabricante AND AVG (Valor) > 100.00
Revelar gabarito e comentário

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.

  1. 1FROM Vendas
  2. 2WHERE (filtra linhas)
  3. 3GROUP BY Fabricante
  4. 4AVG(Valor) (agrega)
  5. 5HAVING AVG > 100 (filtra grupos)
  6. 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: WHEREGROUP BYHAVINGORDER 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.

Gabarito: letra D

Link permanente: /questoes/fc044181