Segue os comandos CREATE TABLE para a tabela de produtos e movimentos. Observe que um produto pode apresentar um ou mais movimentos, porém um movimento não pode existir sem um produto correspondente.
Para saber qual é a quantidade de produtos movimentados precisamos executar um comando SQL de consulta ou extração de dados. Assinale a afirmativa com o comando SELECT que apresente o produto (id e nome) , a soma das quantidades dos movimentos correspondentes, sendo agrupado pelo id e nome do produto.
Alternativas
Alternativa 1:
SELECT p.id, p.nome, SUM(m.quantidade) as soma_quantidade FROM produtos p INNER JOIN movimentos m ON p.id = m.id_produto;
Alternativa 2:
SELECT SUM(m.quantidade) as soma_quantidade FROM produtos p INNER JOIN movimentos m ON p.id = m.id_produto;
Alternativa 3:
SELECT p.id, p.nome, SUM(m.quantidade) as soma_quantidade FROM produtos p INNER JOIN movimentos m ON p.id = m.id_produto GROUP BY p.id, p.nome;
Alternativa 4:
SELECT p.id, p.nome, AVG(m.quantidade) as soma_quantidade FROM produtos p INNER JOIN movimentos m ON p.id = m.id_produto GROUP BY p.id, p.nome;
Alternativa 5:
SELECT p.id, p.nome, COUNT(m.quantidade) as soma_quantidade FROM produtos p INNER JOIN movimentos m ON p.id = m.id_produto GROUP BY p.id, p.nome;
Soluções para a tarefa
As considerações a respeito das alternativas apresentadas sobre a consulta ao banco de dados são feitas a seguir.
Explicação:
Alternativa 1:
SELECT p.id, p.nome, SUM(m.quantidade) as soma_quantidade FROM produtos p INNER JOIN movimentos m ON p.id = m.id_produto;
Falsa - Faltou o comando para fazer o agrupamento (GROUP BY)
Alternativa 2:
SELECT SUM(m.quantidade) as soma_quantidade FROM produtos p INNER JOIN movimentos m ON p.id = m.id_produto;
Falsa - Faltam as colunas id e nome
Alternativa 3:
SELECT p.id, p.nome, SUM(m.quantidade) as soma_quantidade FROM produtos p INNER JOIN movimentos m ON p.id = m.id_produto GROUP BY p.id, p.nome;
Verdadeira - Atende a todos os requisitos
Alternativa 4:
SELECT p.id, p.nome, AVG(m.quantidade) as soma_quantidade FROM produtos p INNER JOIN movimentos m ON p.id = m.id_produto GROUP BY p.id, p.nome;
Falsa - AVG traz a média das quantidades e não a soma
Alternativa 5:
SELECT p.id, p.nome, COUNT(m.quantidade) as soma_quantidade FROM produtos p INNER JOIN movimentos m ON p.id = m.id_produto GROUP BY p.id, p.nome;
Falsa - COUNT traz o número de quantidades e não a soma