Uma base de dados relativa a vendas efetuadas por uma empres...
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?
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