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_1 | vTotalVenda_2 | Variacao_Percentual | vMensagem |
---|---|---|---|
108395 | 107917 | -0.0044061255184673406 | Amarela |