2
respostas

[MINHA RESPOSTA]

DELIMITER $$
CREATE PROCEDURE Comparativo_Vendas (vPrimeira_data DATE, vSegunda_Data DATE)
BEGIN
    DECLARE vFaturamento1 FLOAT;
    DECLARE vFaturamento2 FLOAT;
    DECLARE vVariacao FLOAT;
    DECLARE vMsg VARCHAR(10);
    SELECT SUM(B.QUANTIDADE * B.PRECO) INTO vFaturamento1 FROM 
    NOTAS A INNER JOIN ITENS_NOTAS B
    ON A.NUMERO = B.NUMERO
    WHERE A.DATA_VENDA = vPrimeira_data;
    SELECT SUM(B.QUANTIDADE * B.PRECO) INTO vFaturamento2 FROM 
    NOTAS A INNER JOIN ITENS_NOTAS B
    ON A.NUMERO = B.NUMERO
    WHERE A.DATA_VENDA = vSegunda_Data;
    SET vVariacao = ((vFaturamento1 / vFaturamento2) -1) * 100;
    IF vVariacao > 10 THEN
        SET vMsg = "VERDE";
    ELSEIF vVariacao >= -10 AND vVariacao <= 10 THEN
        SET vMsg = "AMARELO";
    ELSE
        SET vMsg = "VERMELHO";
    END IF;
    SELECT vMsg;
END $$
DELIMITER ;

CALL Comparativo_Vendas ("20170301", "20170530");
2 respostas

Olá Bruno, tudo bem?

Parabéns, a sua procedure ficou muito legal, mas tenho um ponto a comentar sobre ela. No exercício é solicitado que:

  • Se a variação percentual destas vendas for maior que 10% a resposta deve ser Verde

  • Se for entre -10% e 10% deve retornar Amarela

  • Se o retorno for menor que -10% deve retornar Vermelho

Porém, ao analisar o seu código, identifiquei que você está informando

vVariacao >= -10 AND vVariacao >= 10 THEN

Ao invés de:

vVariacao >= -10 AND vVariacao <= 10 THEN

Pois como a condição é entre -10% e 10%, o sinal é de menor e igual, pois o valor precisa sermaior ou igual a -10 ou menor ou igual a 10 para atender a essa condição.

Foi muito legal você ter compartilhado a sua resposta da atividade aqui com a gente, você está indo muito bem Bruno :).

Continue assim, qualquer dúvida é só falar e bons estudos!

Perfeito. Muito obrigado. Correção efetuada.