Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Sugerencia] script CASE

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');
1 respuesta

Hola Christian,

Gracias por compartir tu código con nosotros. Recuerda que estamos aquí para ayudarte. Si necesitas ayuda, no dudes en buscarnos en el foro.

¡Gracias nuevamente!

Saludos,

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