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

Nuevo SP comparacion_ventas aplicando CASE

** DELIMITER //

CREATE PROCEDURE comparacion_ventas(IN fecha1 DATE, IN fecha2 DATE) BEGIN DECLARE venta1 DECIMAL(10, 2); DECLARE venta2 DECIMAL(10, 2); DECLARE variacion DECIMAL(5, 2); DECLARE resultado VARCHAR(10);

-- Obtener el total de ventas para la primera fecha
SELECT IFNULL(SUM(B.CANTIDAD * B.PRECIO), 0) INTO venta1
FROM facturas A
INNER JOIN items_facturas B ON A.NUMERO = B.NUMERO
WHERE A.FECHA_VENTA = fecha1;

-- Obtener el total de ventas para la segunda fecha
SELECT IFNULL(SUM(B.CANTIDAD * B.PRECIO), 0) INTO venta2
FROM facturas A
INNER JOIN items_facturas B ON A.NUMERO = B.NUMERO
WHERE A.FECHA_VENTA = fecha2;

-- Manejo de División por Cero y Calcular la variación porcentual
IF venta1 = 0 THEN
    SET variacion = 0;
ELSE
    SET variacion = ((venta2 - venta1) / venta1) * 100;
END IF;

-- Determinar el resultado basado en la variación porcentual usando CASE 
SET resultado = CASE 
    WHEN variacion > 10 THEN 'Verde'
    WHEN variacion >= -10 AND variacion <= 10 THEN 'Amarillo'
    ELSE 'Rojo'
END;

-- Mostrar el resultado 
SELECT venta1 AS 'Venta Fecha 1', venta2 AS 'Venta Fecha 2', variacion AS 'Variación Porcentual', resultado AS 'Evaluación';

END;

//

DELIMITER ; **


Explicación:

  1. Verificación de Ventas Nulas: Se usa IFNULL(SUM(B.CANTIDAD * B.PRECIO), 0) para asegurarse de que venta1 y venta2 no sean nulas, estableciéndolas a 0 si no hay ventas.

  2. Manejo de División por Cero: Se verifica si venta1 es 0 antes de calcular la variación porcentual. Si venta1 es 0, la variación se establece en 0.

  3. Formato de Salida: Los nombres de las columnas en el SELECT final se han actualizado para ser más claros.

1 respuesta

Hola, Javier ,

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!