Cette semaine, nous examinons quelque chose de très précis, mais utile : une table de dimension « date » associée à une fonction UDF qui calcule le nombre de jours ouvrés entre deux dates. (Comme c’est un défi facile, nous n’excluerons pas les jours fériés).
Nous avons parlé avec le Syndicat des Superhéros et avons reçu des plaintes selon lesquelles les horaires des superhéros ne tiennent pas dans une « journée de travail normale' » et que « même les superhéros ont besoin de week-ends de repos ».
Pour commencer ce défi, nous avons besoin que vous construisiez une table de dimension « date » qui contient les informations et colonnes suivantes :
- Toutes les dates depuis le 1er janvier 2000
- L’année en 4 chiffres (pour le 1er janvier 2000, ce serait 2000)
- Les 3 premières lettres du mois (pour le 1er janvier 2000, ce serait Jan)
- Le nom du mois (pour le 1er janvier 2000, ce serait Janvier)
- Le numéro du jour dans ce mois (pour le 1er janvier 2000, ce serait 1)
- Le numéro du jour de la semaine (les lundis sont 1, les mardis sont 2, etc., OU tout autre ordre qui a du sens pour vous)
- Le numéro de la semaine dans cette année (pour le 1er janvier 2000, ce serait 1)
- Le numéro du jour dans cette année (pour le 1er janvier 2000, ce serait 1)
En plus de la table de dimension « date », vous devez créer une fonction pour calculer le nombre de jours ouvrés entre deux dates, qui puisse facilement alterner entre l’inclusion ou l’exclusion de la deuxième date dans le calcul (c’est à dire que du lundi 2 novembre 2020 inclus au vendredi 6 novembre 2020 non inclus, la fonction doit indiquer 4 jours, mais du lundi 2 novembre 2020 inclus au vendredi 6 novembre 2020 inclus, elle indiquera 5 jours).
Utilisez ensuite cette fonction sur les données de test suivantes :
Données de test:
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');
Et n’oubliez pas, si vous souhaitez participer aux défis:
1. Inscrivez-vous en tant que membre de Frosty Friday. –> Vous pouvez le faire en cliquant sur la barre latérale, puis en cliquant sur ‘REGISTER‘ (notez que s’inscrire à notre liste de diffusion ne vous donne pas de compte Frosty Friday).
2. Publiez votre code sur GitHub et rendez-le accessible au public (consultez notre guide si vous ne savez pas comment faire, disponible ici)
3. Postez l’URL dans les commentaires du défi.
Si vous avez des questions techniques que vous souhaitez poser à la communauté, vous pouvez les poser ici, sur notre thread dédié.