Para retornar o valor total vendido por produto, independente do pedido, apenas para os produtos que tiveram VENDAS TOTAIS superior a 10000, qual seria o select adequado?
Questão
Para retornar o valor total vendido por produto, independente do pedido, apenas para os produtos que tiveram VENDAS TOTAIS superior a 10000, qual seria o select adequado?
Alternativas
A) SELECT CDPRODUTO, SUM(QTVENDIDA * VLUNITARIO) VL_TOTAL FROM ITEM_PEDIDO_VENDA GROUP BY CDPRODUTO HAVING SUM(QTVENDIDA * VLUNITARIO) > 10000;
B) SELECT CDPRODUTO, SUM(QTVENDIDA * VLUNITARIO) VL_TOTAL FROM ITEM_PEDIDO_VENDA GROUP BY CDPRODUTO HAVING SUM(QTVENDIDA * VLUNITARIO) >= 10000;
C) SELECT CDPRODUTO, SUM(QTVENDIDA * VLUNITARIO) VL_TOTAL FROM ITEM_PEDIDO_VENDA WHERE SUM(QTVENDIDA * VLUNITARIO) > 10000 GROUP BY CDPRODUTO;
D) SELECT CDPEDIDO, SUM(QTVENDIDA * VLUNITARIO) VL_TOTAL FROM ITEM_PEDIDO_VENDA GROUP BY CDPEDIDO HAVING SUM(QTVENDIDA * VLUNITARIO) >= 10000;
E) SELECT CDPRODUTO, SUM(QTVENDIDA * VLUNITARIO) VL_TOTAL FROM ITEM_PEDIDO_VENDA WHERE SUM(QTVENDIDA * VLUNITARIO) >= 10000 GROUP BY CDPRODUTO;
Explicação
Queremos o total vendido por produto, independentemente do pedido. Isso implica:
- Agrupar por produto: usar
GROUP BY CDPRODUTO. - Somar o total vendido:
SUM(QTVENDIDA * VLUNITARIO). - Filtrar apenas os produtos cujo total vendido seja superior a 10000. Como esse filtro depende de um agregado (SUM), ele deve ser feito com HAVING, não com
WHERE. - A condição é estritamente maior ("superior a 10000"), então deve ser
> 10000(não>= 10000).
Analisando as alternativas:
- A: agrupa por
CDPRODUTOe filtra comHAVING SUM(...) > 10000✅ - B: usa
>= 10000(inclui 10000), mas o enunciado pede superior a 10000 ❌ - C e E: tentam usar
WHERE SUM(...) ..., o que é inválido (agregação não pode ser usada assim emWHERE) ❌ - D: agrupa por
CDPEDIDO, mas o pedido é por produto ❌
Alternativa correta: (A).