Este es mi solucion del desafio.
CREATE DEFINER=root
@localhost
PROCEDURE comparacion_ventas
(IN fecha1 DATE, IN fecha2 DATE)
BEGIN
DECLARE total_venta1 DECIMAL(10,2);
DECLARE total_venta2 DECIMAL(10,2);
DECLARE variacion DECIMAL(10,2);
DECLARE resultado VARCHAR(10);
SELECT SUM(B.CANTIDAD * B.PRECIO) INTO total_venta1
FROM facturas A
INNER JOIN items_facturas B ON A.NUMERO = B.NUMERO
WHERE A.FECHA_VENTA = fecha1;
SELECT SUM(B.CANTIDAD * B.PRECIO) INTO total_venta2
FROM facturas A
INNER JOIN items_facturas B ON A.NUMERO = B.NUMERO
WHERE A.FECHA_VENTA = fecha2;
IF total_venta1 IS NOT NULL AND total_venta2 IS NOT NULL AND total_venta2 != 0 THEN
SET variacion = ((total_venta1 - total_venta2) / total_venta2) * 100;
ELSE
SET variacion = NULL; -- Asigna NULL si alguna de las ventas es NULL o total_venta2 es 0
END IF;
IF variacion IS NOT NULL THEN
IF variacion > 10 THEN
SET resultado = 'Verde';
ELSEIF variacion BETWEEN -10 AND 10 THEN
SET resultado = 'Amarillo';
ELSEIF variacion < -10 THEN
SET resultado = 'Rojo';
END IF;
ELSE
SET resultado = 'Sin datos'; -- Mensaje en caso de falta de datos para el cálculo
END IF;
SELECT resultado AS Evaluacion_Ventas;
END
CALL comparacion_ventas('2015-03-01', '2017-04-01');
![Resultado de la consulta] (https://cdn1.gnarususercontent.com.br/6/596707/c01acff8-c0b5-4586-b01b-ab02d9d5c7a3.png)