Uma base de dados relativa a vendas efetuadas por uma empres...

Próximas questões
Com base no mesmo assunto
Q482749 Banco de Dados
Uma base de dados relativa a vendas efetuadas por uma empresa apresenta as seguintes tabelas:

VENDEDOR(IdVendedor, NomeVendedor)
CLIENTE(NomeCliente, CPFCliente, TelefoneCliente)
PRODUTO(IdItem, NomeItem, ValorItem)
VENDA(IdVenda, DataVenda, IdVendedor, CPFCliente)
ITEMVENDA(IdVenda, SequencialItemVenda, IdItem,QuantidadeItem)

Que comando SQL pode ser dado para, a partir das tabelas acima, ter como resultado duas colunas, a primeira contendo o IdVenda e a segunda o valor total da venda?
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: Letra A.

A resolução desta questão exige a compreensão da linguagem SQL e do conceito de junção de tabelas e agregação de dados. A questão pede para calcular o valor total de cada venda, o que implica em somar os produtos vendidos multiplicando a quantidade pelo valor de cada um. Isso deve ser feito para cada identificador de venda (IdVenda).

Para calcular o valor total de cada venda, deve-se:

  • Relacionar as tabelas VENDA, ITEMVENDA e PRODUTO com base em seus campos relacionados;
  • Multiplicar o ValorItem pela QuantidadeItem para obter o subtotal de cada item vendido;
  • Usar a função SUM() para somar todos os subtotais de itens da mesma venda;
  • Agrupar os resultados pelo IdVenda com o comando GROUP BY, o que é fundamental para que a função de agregação SUM() atue corretamente sobre as somas individuais de cada venda.

A alternativa A está correta pois segue todos esses passos. O comando SQL apresentado realiza uma junção implícita entre as tabelas VENDA, ITEMVENDA e PRODUTO utilizando o operador = no comando WHERE para especificar as condições de relacionamento. Posteriormente, aplica a função SUM() na multiplicação de QuantidadeItem por ValorItem, e agrupa os resultados por IdVenda utilizando GROUP BY. Isso atende ao requisito de retornar duas colunas: uma com IdVenda e outra com o valor total da venda (ValorTotal).

É importante notar que sem o GROUP BY, o SQL não seria capaz de retornar o valor total por venda, tornando as outras alternativas incorretas, pois, ou elas não agrupam os dados corretamente, ou tentam fazer uma agregação sem o devido agrupamento.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo