Questão nº 53

Questão de Tecnologia da Informação · FCC DPE-AM 2017 (nº 53)

FCC2017Analista em Gestão Especializado em Tecnologia da Informação de Defensoria - Analista de Banco de DadosTecnologia da Informação
Gabarito: Dver comentário ↓

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 é:

Resposta comentada

Gabarito Alternativa D

Para agrupar dados e fazer cálculos (como média, soma, contagem) para cada grupo, usamos o comando GROUP BY. Se quisermos filtrar esses grupos com base no resultado desses cálculos, usamos o comando HAVING.

  • (A) Incorreta: A função MED não é padrão SQL para média (o correto é AVG). Além disso, a cláusula WHERE não pode filtrar diretamente resultados de funções de agregação (MED(Valor)).
  • (B) Incorreta: A cláusula GROUP BY Valor agruparia por valor do item, não por fabricante. O correto seria GROUP BY Fabricante. A cláusula WHERE não pode filtrar resultados de funções de agregação (AVG(Valor)), para isso usa-se HAVING. Armadilha da banca: Esta alternativa é tentadora porque usa AVG e tenta filtrar com a condição, mas erra no GROUP BY (agrupando pelo item em vez do fabricante) e, crucialmente, usa WHERE em vez de HAVING para filtrar o resultado da agregação. Lembre-se: WHERE filtra linhas individuais antes do agrupamento; HAVING filtra grupos depois do agrupamento e da agregação.
  • (C) Incorreta: A função MED não é padrão SQL para média. A sintaxe GROUPING Fabricante WITH AVG (Valor) > 100.00 não é um comando SQL-ANSI válido para agrupar e filtrar.
  • (D) Correta: O comando SELECT Fabricante, AVG (Valor) seleciona o nome do fabricante e calcula a média dos valores. FROM Vendas especifica a tabela. GROUP BY Fabricante agrupa os resultados por fabricante, permitindo que AVG(Valor) calcule a média para cada um. HAVING AVG (Valor) > 100.00 filtra esses grupos, mostrando apenas os fabricantes cuja média de valor é superior a R$ 100,00. Esta é a sintaxe correta e atende a todos os requisitos da questão.
  • (E) Incorreta: A sintaxe JOIN Fabricante está incompleta e incorreta, pois não há uma cláusula ON para definir a condição de junção. A parte AND AVG (Valor) > 100.00 está sintaticamente fora de lugar, não sendo parte de um WHERE ou HAVING válido.

Fonte: FCC DPE-AM 2017 Analista em Gestão Especializado em Tecnologia da Informação de Defensoria - Analista de Banco de Dados (Caderno Tipo 001). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho