Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

RESPOSTA

CREATE DEFINER=`root`@`localhost` PROCEDURE `COMPARA_FATURAMENTO`(vDATA1 DATE,vDATA2 DATE)
BEGIN

DECLARE FAT1  float;
DECLARE FAT2  float;
DECLARE VARIACAO float;

SELECT SUM(B.QUANTIDADE * B.PRECO) INTO FAT1 FROM 
NOTAS_FISCAIS A INNER JOIN ITENS_NOTAS_FISCAIS B
ON A.NUMERO = B.NUMERO
WHERE A.DATA_VENDA = vDATA1 ;
SELECT SUM(B.QUANTIDADE * B.PRECO) INTO FAT2 
FROM NOTAS_FISCAIS A 
INNER JOIN ITENS_NOTAS_FISCAIS B
ON A.NUMERO = B.NUMERO
WHERE A.DATA_VENDA = vDATA2 ;

SET VARIACAO = ((FAT1/FAT2)-1)*100;
IF VARIAÇÃO > 10 THEN
SELECT 'VERDE';
elseif VARIACAO < 10 AND VARIACAO > -10 THEN
SELECT 'AMARELO';
ELSE
SELECT 'VERMELHO';
end if;    

END
call COMPARA_FATURAMENTO('20170101','20170105');

Resposta, neste caso, deu verde.

1 resposta
solução!

Olá Eder, tudo bem?

Peço desculpas pela demora no retorno.

Parabéns pela Procedure Eder, mas tem algumas diferenças entre a sua resposta e a aprensentada na opnião do instrutor, que ao executar as duas, o resultado acabou sendo diferente.

No momento da divisão dos faturamentos, você realizou a divição do faturmento inicial pelo faturmento final:

  • Sua Procedure
SET VARIACAO = ((FAT1/FAT2)-1)*100;
  • Procedure do instrutor
SET Variacao = ((FaturamentoFinal / FaturamentoInicial) -1) * 100;

O segundo ponto é que no enunciado informa que se for entre -10% e 10% deve retornar Amarela, então o -10% e o 10% também deve ser considerado:

  • Sua Procedure

elseif VARIACAO < 10 AND VARIACAO > -10 THEN
SELECT 'AMARELO';
  • Procedure do instrutor
ELSEIF Variacao >= -10 AND Variacao <= 10 THEN
SELECT 'Amarelo';

Foi bem legal você ter compartilhado aqui com a gente a sua resposta para atividade Eder :).

Continue assim e bons estudos!