Semana 19 - SQL y Técnicas de Consulta

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)

Interfaz de usuario gráficaDescripción generada automáticamente con confianza media

Ejemplo de la función

Entonces use esta función en los siguientes 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:

  1. 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).
  2. 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).
  3. 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.

Previous
Previous

Semana 22 – Básico

Next
Next

Semana 20 - Procedimientos Almacenados y UDFs