1
resposta

Minha Resolução do Exercício

CREATE DEFINER=`root`@`localhost` PROCEDURE `comparativo_vendas`(vData date, vData1 date)
BEGIN
    DECLARE faturamento FLOAT;
    DECLARE faturamento1 FLOAT;
    DECLARE variacao FLOAT;
    DECLARE cor varchar(20);
    SELECT SUM(B.QUANTIDADE * B.PRECO) INTO faturamento FROM 
    NOTAS_FISCAIS A INNER JOIN ITENS_NOTAS_FISCAIS B
    ON A.NUMERO = B.NUMERO
    WHERE A.DATA_VENDA = vData;
    SELECT SUM(B.QUANTIDADE * B.PRECO) INTO faturamento1 FROM 
    NOTAS_FISCAIS A INNER JOIN ITENS_NOTAS_FISCAIS B
    ON A.NUMERO = B.NUMERO
    WHERE A.DATA_VENDA = vData1;
    SET variacao = ((vData/vData1)-1)*100;
    IF variacao > 10 then
        set cor = 'Verde';
    ELSEIF variacao <= 10 AND variacao >= -10 THEN
        set cor = 'Amarela';
    ELSE 
        set cor = 'Vermelha';
    END IF;
    select faturamento as Faturamento_Inicial, faturamento1 as Faturamento_Final,
    variacao as Variacao, cor as Status_variacao;
    
END
1 resposta

Olá, Alex! Como vai?

Mandou bem na resolução do exercício! Com essa procedure, é possível calcular a variação do faturamento em um período de tempo específico.

Há apenas um detalhe na lógica que precisa de uma certa atenção: a variável variação está recebendo a divisão de datas, não dos valores do faturamento. A linha SET variacao = ((vData/vData1)-1)*100; deveria ser SET Variacao = ((FaturamentoFinal / FaturamentoInicial) -1) * 100;.

Com essa mudança na lógica, o resultado deve ficar mais apurado!

Abraços, Alex. Continue praticando.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!