1
resposta

[Projeto] 05 - Faturamento anual (SOLUÇÃO)

Construa uma Stored Procedure chamada Comparativo_Vendas que compara as vendas em duas datas (Estas duas datas serão parâmetros da SP). 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 form menor que -10% deve retornar "Vermelho".

Solução:

DELIMITER $$
USE sucos_vendas $$
CREATE PROCEDURE Comparativo_Vendas (vData_1 DATE, vData_2 DATE)
BEGIN
    DECLARE vTotalVenda_1 FLOAT;
    DECLARE vTotalVenda_2 FLOAT;
    DECLARE vMensagem VARCHAR(30);

    SELECT SUM(B.QUANTIDADE * B.PRECO) INTO vTotalVenda_1
        FROM notas_fiscais A
        INNER JOIN itens_notas_fiscais B
        ON A.NUMERO = B.NUMERO
        WHERE A.DATA_VENDA = vData_1;

    SELECT SUM(B.QUANTIDADE * B.PRECO) INTO vTotalVenda_2
        FROM notas_fiscais A
        INNER JOIN itens_notas_fiscais B
        ON A.NUMERO = B.NUMERO
        WHERE A.DATA_VENDA = vData_2;

    IF ((vTotalVenda_2 - vTotalVenda_1) / vTotalVenda_1) * 100  >  10 THEN
        SET vMensagem = 'Verde';
    ELSEIF ((vTotalVenda_2 - vTotalVenda_1) / vTotalVenda_1) * 100 BETWEEN -10 AND 10 THEN
        SET vMensagem = 'Amarela';
    ELSE
        SET vMensagem = 'Vermelho';
    END IF;
    SELECT vTotalVenda_1, vTotalVenda_2, 
           ((vTotalVenda_2 - vTotalVenda_1) / vTotalVenda_1) AS Variacao_Percentual, 
           vMensagem;
END $$
DELIMITER ;

CALL Comparativo_Vendas('2015-01-02', '2015-01-01');

Output:

vTotalVenda_1vTotalVenda_2Variacao_PercentualvMensagem
108395107917-0.0044061255184673406Amarela
1 resposta

Oi, Sarah! Tudo bem?

Peço desculpas pela demora em te responder.

Parabéns pela resolução da atividade, a sua stored procedure está bem organizada e de fácil entendimento!

Existe um único ponto que pode ser implementado, que é multiplicar o valor presente na coluna Variacao_Percentual por 100. Desta maneira, apresentamos de fato um valor percentual. Para isso, será necessário realizar alguns passos, vamos lá?

  1. Localizar a aba "Stored Procedures" do seu banco de dados;
  2. Clicar com o botão direito do mouse sobre a stored procedure Comparativo_Vendas;
  3. Selecionar a opção "Alter Stored Procedure".
  4. Neste momento, será aberta uma janela para edição de Comparativo_Vendas. Localize o trecho de código abaixo:
    SELECT vTotalVenda_1, vTotalVenda_2, 
        ((vTotalVenda_2 - vTotalVenda_1) / vTotalVenda_1) AS Variacao_Percentual, 
        vMensagem;
  5. Após a expressão ((vTotalVenda_2 - vTotalVenda_1) / vTotalVenda_1), adicione um asterisco (para representar a multiplicação) e escreva o número 100:
    SELECT vTotalVenda_1, vTotalVenda_2, 
        ((vTotalVenda_2 - vTotalVenda_1) / vTotalVenda_1) * 100 AS Variacao_Percentual, 
        vMensagem;
  6. Pronto! Basta clicar no botão "Apply" para confirmar a atualização e realizar novamente o comando abaixo:
     CALL Comparativo_Vendas('2015-01-02', '2015-01-01');

Desta forma, chegaremos no seguinte resultado:

vTotalVenda_1vTotalVenda_2Variacao_PercentualvMensagem
108395107917-0.44061255184673406Amarela

Sarah, continue com esta dedicação em seus estudos. Estarei aqui para ajudá-la em caso de dúvidas.

Abraços!