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

[Sugerencia] Desafio completado | Facturación Anual

CREATE DEFINER=root@localhost PROCEDURE comparacion_ventas(fecha1 DATE, fecha2 DATE)
BEGIN
/*
Construye un Stored Procedure llamado comparacion_ventas que compare las ventas en dos
fechas distintas (Estas fechas serán los parámetros de la SP). Si la variación porcentual de
estas ventas es mayor al 10% la respuesta debe ser ‘Verde’. Si está entre -10% y 10% debe retornar
‘Amarillo’. Si la variación es menor al -10% debe retornar ‘Rojo’.*/
DECLARE resultado_venta_fecha1 DECIMAL(10,2);
DECLARE resultado_venta_fecha2 DECIMAL(10,2);
DECLARE variacion_porcentual DECIMAL(10,2);
DECLARE resultado_semaforo_variacion VARCHAR(15);

-- Obtener las ventas de cada fecha usando tu función
SET resultado_venta_fecha1 = facturacion_fecha_determinada(fecha1);
SET resultado_venta_fecha2 = facturacion_fecha_determinada(fecha2);

-- Evita división por cero si no hay ventas en fecha1
IF resultado_venta_fecha1 > 0 THEN
    SET variacion_porcentual = ((resultado_venta_fecha2 - resultado_venta_fecha1) / resultado_venta_fecha1) * 100;
ELSE
    SET variacion_porcentual = NULL;
END IF;

-- Determinar el color del semáforo
IF variacion_porcentual > 10 THEN
    SET resultado_semaforo_variacion = 'Verde';
ELSEIF variacion_porcentual >= -10 AND variacion_porcentual <= 10 THEN
    SET resultado_semaforo_variacion = 'Amarillo';
ELSE
    SET resultado_semaforo_variacion = 'Rojo';
END IF;

-- Mostrar resultado de forma clara y compacta
SELECT 
    fecha1 AS Fecha_1,
    resultado_venta_fecha1 AS Venta_Fecha1,
    fecha2 AS Fecha_2,
    resultado_venta_fecha2 AS Venta_Fecha2,
    variacion_porcentual AS Variacion_Porcentual,
    resultado_semaforo_variacion AS Semaforo;

END

1 respuesta

Hola Jonathan,

¡Qué bueno que estás trabajando en el desafío de facturación anual! Tu procedimiento almacenado parece estar bien estructurado y cumple con la lógica solicitada en el ejercicio. Aquí hay algunos puntos que podrían ser útiles:

  1. Función facturacion_fecha_determinada: Asegúrate de que esta función esté correctamente definida y que devuelva el total de ventas para una fecha específica. Esta función parece ser clave para que tu procedimiento funcione correctamente.

  2. Evitar división por cero: Has tomado una buena precaución al verificar que resultado_venta_fecha1 sea mayor que cero antes de realizar la división. Esto evitará errores en tiempo de ejecución.

  3. Verificación de la lógica del semáforo: La lógica de los colores del semáforo está bien implementada. Asegúrate de que las condiciones cubren todos los casos posibles de variación porcentual.

  4. Prueba del procedimiento: No olvides probar tu procedimiento con diferentes fechas para asegurarte de que la lógica funciona como esperas. Por ejemplo:

    CALL comparacion_ventas('2023-01-01', '2023-02-01');
    
  5. Revisar permisos: Asegúrate de que el usuario que ejecuta el procedimiento tenga los permisos necesarios para hacerlo, especialmente si estás trabajando en un entorno de producción.

Si todo está en orden y las pruebas muestran los resultados esperados, ¡parece que has completado el desafío con éxito!

Espero haber ayudado y buenos estudios!

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