Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

Desafio

Usando los if anidados y la cadena if-elseif-else-endif Me salio esto:

USE JUGOS_VENTAS;
DROP PROCEDURE IF EXISTS COMPARACION_VENTAS;
DELIMITER $$
CREATE PROCEDURE 
COMPARACION_VENTAS(FECHA1 DATE, FECHA2 DATE)
BEGIN
DECLARE TOTAL_VENTA1 FLOAT DEFAULT 0.0;
DECLARE TOTAL_VENTA2 FLOAT DEFAULT 0.0;
DECLARE VARIACION FLOAT;
DECLARE MESSAGE VARCHAR(50) DEFAULT "***";

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
THEN 
    SET VARIACION = CEIL(((TOTAL_VENTA1 - TOTAL_VENTA2)/TOTAL_VENTA2)*100);
    IF VARIACION > 10.0
    THEN
        SET MESSAGE = "VERDE : ";
    ELSEIF VARIACION BETWEEN -10 AND 10
    THEN 
        SET MESSAGE = "AMARILLO : ";
    ELSE
        SET MESSAGE = "ROJO : ";
    END IF;
    SET MESSAGE = CONCAT(MESSAGE,VARIACION,'%');
ELSE
    -- Coalece evita que todo se haga null, 
    -- pues si concatenas un o mas NULL, con no NULLs
    -- Toda la expresion se hace NULL.
    SET MESSAGE = concat("LOS VALORES SON (DEFAULT): ", COALESCE(TOTAL_VENTA1,'NULL'),' Y ', COALESCE(TOTAL_VENTA2,'NULL'));
END IF;
SELECT MESSAGE;
END $$

CALL COMPARACION_VENTAS('2016-01-01','2017-01-01');

Bueno, el resultado sale lo mismo que la solucion del profesor, pero la diferencia es que sale el porcentaje de variacion, si es negativo o positivo, eso ayudara si aumento a disminuye las ventas en una fecha determinada.

1 respuesta
solución!

Hola Edsel, espero que estés bien! ¡Que increible! Felicitaciones por la creatividad! Gracias por compartir tu código con nosotros. Le recomendamos que comparta su código con sus colegas en Discord, allí es posible que todos lo vean e interactúen contigo. Si tiene alguna pregunta sobre el contenido del curso, estamos aquí para ayudarlo. ¡Sigue practicando! ¡Vamos juntos! :)

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)