Esta semana estamos viendo algo peculiar pero útil: la dimensión de la fecha junto con un UDF que calcula la cantidad de días hábiles entre 2 fechas (y debido a que es un desafío fácil, no estamos excluyendo los días festivos).
Hemos hablado con la Unión de Superhéroes y hemos recibido quejas de que los horarios de cualquier héroe no tienen en cuenta una «rutina de trabajo normal» y que «incluso los superhéroes necesitan fines de semana libres».
Para comenzar esta empresa, necesitamos que construya una tabla de dimensión de fecha que contenga lo siguiente:
- La fecha, a partir del 1-1-2000
- El año en 4 números (para el 1-1-2000 sería 2000)
- Las 3 primeras letras del mes (para el 1-1-2000 sería Ene)
- El nombre del mes (para el 1-1-2000 sería enero)
- El número del día dentro de ese mes (para 1-1-2000 sería 1)
- El número del día de la semana (los lunes son 1, los martes son 2, etc., O cualquier otro orden que tenga sentido para usted)
- El número de la semana de ese año (para el 1-1-2000 sería 1)
- El número del día en ese año (para 1-1-2000 sería 1)
Además de la dimensión de la fecha, también debe crear una función para calcular la cantidad de días hábiles entre 2 fechas que pueda cambiar fácilmente entre incluir o excluir la segunda fecha en el cálculo (es decir, desde el lunes 2 de noviembre de 2020 incluido, hasta el viernes 6 de noviembre de 2020, pero sin incluirlo, serán 4 días, pero desde el lunes 2 de noviembre de 2020 inclusive hasta el viernes 6 de noviembre de 2020 inclusive son 5 días)
Ejemplo de la función
Entonces use esta función en los siguientes prueba_datos:
Prueba_datos
create table testing_data (
id INT,
start_date DATE,
end_date DATE
);
insert into testing_data (id, start_date, end_date) values (1, '11/11/2020', '9/3/2022');
insert into testing_data (id, start_date, end_date) values (2, '12/8/2020', '1/19/2022');
insert into testing_data (id, start_date, end_date) values (3, '12/24/2020', '1/15/2022');
insert into testing_data (id, start_date, end_date) values (4, '12/5/2020', '3/3/2022');
insert into testing_data (id, start_date, end_date) values (5, '12/24/2020', '6/20/2022');
insert into testing_data (id, start_date, end_date) values (6, '12/24/2020', '5/19/2022');
insert into testing_data (id, start_date, end_date) values (7, '12/31/2020', '5/6/2022');
insert into testing_data (id, start_date, end_date) values (8, '12/4/2020', '9/16/2022');
insert into testing_data (id, start_date, end_date) values (9, '11/27/2020', '4/14/2022');
insert into testing_data (id, start_date, end_date) values (10, '11/20/2020', '1/18/2022');
insert into testing_data (id, start_date, end_date) values (11, '12/1/2020', '3/31/2022');
insert into testing_data (id, start_date, end_date) values (12, '11/30/2020', '7/5/2022');
insert into testing_data (id, start_date, end_date) values (13, '11/28/2020', '6/19/2022');
insert into testing_data (id, start_date, end_date) values (14, '12/21/2020', '9/7/2022');
insert into testing_data (id, start_date, end_date) values (15, '12/13/2020', '8/15/2022');
insert into testing_data (id, start_date, end_date) values (16, '11/4/2020', '3/22/2022');
insert into testing_data (id, start_date, end_date) values (17, '12/24/2020', '8/29/2022');
insert into testing_data (id, start_date, end_date) values (18, '11/29/2020', '10/13/2022');
insert into testing_data (id, start_date, end_date) values (19, '12/10/2020', '7/31/2022');
insert into testing_data (id, start_date, end_date) values (20, '11/1/2020', '10/23/2021');
Recuerda que si deseas participar:
- Regístrate como miembro de Frosty Friday. Puedes hacerlo haciendo clic en la barra lateral y luego yendo a «REGISTRARSE» (ten en cuenta que unirte a nuestra lista de correo no te proporcionará una cuenta de Frosty Friday).
- Publica tu código en GitHub y asegúrate de que sea de acceso público (consulta nuestra guía si no sabes cómo hacerlo).
- Publica la URL en los comentarios del desafío.
Si tienes alguna pregunta técnica que te gustaría plantear a la comunidad, puedes hacerlo aquí, en nuestro hilo dedicado a estos retos.
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.