CREATE DEFINER=`root`@`localhost` PROCEDURE `comparacion_ventas_case`(IN fecha1 DATE, IN fecha2 DATE)
BEGIN
DECLARE total_venta_fecha1 DECIMAL(10,2);
DECLARE total_venta_fecha2 DECIMAL(10,2);
DECLARE variacion_porcentual DECIMAL(10,2);
DECLARE resultado VARCHAR(10);
-- Calcular las ventas totales para la primera fecha
SELECT COALESCE(SUM(B.CANTIDAD * B.PRECIO), 0) INTO total_venta_fecha1
FROM facturas A
INNER JOIN items_facturas B ON A.NUMERO = B.NUMERO
WHERE A.FECHA_VENTA = fecha1;
-- Calcular las ventas totales para la segunda fecha
SELECT COALESCE(SUM(B.CANTIDAD * B.PRECIO), 0) INTO total_venta_fecha2
FROM facturas A
INNER JOIN items_facturas B ON A.NUMERO = B.NUMERO
WHERE A.FECHA_VENTA = fecha2;
-- Calcular la variación porcentual
IF total_venta_fecha1 = 0 THEN
SET variacion_porcentual = 100; -- Si no hay ventas en fecha1, consideramos un cambio del 100%
ELSE
SET variacion_porcentual = ((total_venta_fecha2 - total_venta_fecha1) / total_venta_fecha1) * 100;
END IF;
-- Determinar el resultado basado en la variación porcentual utilizando CASE
SET resultado = CASE
WHEN variacion_porcentual > 10 THEN 'Verde'
WHEN variacion_porcentual >= -10 AND variacion_porcentual <= 10 THEN 'Amarillo'
ELSE 'Rojo'
END;
-- Devolver el resultado
SELECT resultado AS Estado_Ventas, total_venta_fecha1 AS Total_Venta_Fecha1, total_venta_fecha2 AS Total_Venta_Fecha2;
END
CALL comparacion_ventas_case('2015-01-01', '2015-01-15');