DELIMITER //
CREATE PROCEDURE suma_dias_facturas() BEGIN DECLARE fecha_inicial DATE; DECLARE fecha_final DATE; DECLARE num_facturas INT;
-- Inicializar variables
SET fecha_inicial = '2017-01-01';
SET fecha_final = '2017-01-10';
-- Bucle para recorrer cada día desde la fecha inicial hasta la fecha final
WHILE fecha_inicial <= fecha_final DO
-- Contar el número de facturas para la fecha actual
SELECT COUNT(*) INTO num_facturas
FROM facturas
WHERE FECHA_VENTA = fecha_inicial;
-- Mostrar la fecha y el número de facturas
SELECT CAST(fecha_inicial AS CHAR) AS Fecha, num_facturas AS 'Número de Facturas';
-- Sumar 1 día a la fecha inicial
SET fecha_inicial = ADDDATE(fecha_inicial, INTERVAL 1 DAY);
END WHILE;
END;
//
DELIMITER ;
Explicación:
CREATE PROCEDURE suma_dias_facturas(): Crea un procedimiento almacenado llamado suma_dias_facturas.
DECLARE: Declara las variables fecha_inicial y fecha_final de tipo DATE, y num_facturas de tipo INT.
SET fecha_inicial = '2017-01-01'; SET fecha_final = '2017-01-10';: Inicializa las variables fecha_inicial y fecha_final.
WHILE fecha_inicial <= fecha_final DO: Inicia un bucle WHILE que recorre cada día desde fecha_inicial hasta fecha_final.
SELECT COUNT() INTO num_facturas FROM facturas WHERE FECHA_VENTA = fecha_inicial;*: Cuenta el número de facturas para la fecha actual y almacena el resultado en num_facturas.
SELECT CAST(fecha_inicial AS CHAR) AS Fecha, num_facturas AS 'Número de Facturas';: Muestra la fecha y el número de facturas, convirtiendo fecha_inicial a tipo CHAR.
SET fecha_inicial = ADDDATE(fecha_inicial, INTERVAL 1 DAY);: Suma 1 día a la fecha_inicial.
END WHILE: Termina el bucle WHILE.