Cette semaine, nous avons un problème un peu trompeur: très facile à comprendre mais délicat à exécuter en SQL.
Vous trouverez votre code de départ ici:
create or replace table testing_data(id int autoincrement start 1 increment 1, product string, stock_amount int,date_of_check date);
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero capes',1,'2022-01-01');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero capes',2,'2022-01-02');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero capes',NULL,'2022-02-01');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero capes',NULL,'2022-03-01');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero masks',5,'2022-01-01');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero masks',NULL,'2022-02-13');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero pants',6,'2022-01-01');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero pants',NULL,'2022-01-01');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero pants',3,'2022-04-01');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero pants',2,'2022-07-01');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero pants',NULL,'2022-01-01');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero pants',3,'2022-05-01');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero pants',NULL,'2022-10-01');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero masks',10,'2022-11-01');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero masks',NULL,'2022-02-14');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero masks',NULL,'2022-02-15');
insert into testing_data (product,stock_amount,date_of_check) values ('Superhero masks',NULL,'2022-02-13');
Tout le monde a reçu au moins une fois dans sa vie des données parfaitement lisibles et intelligibles pour les humains, mais inutiles pour les machines. Un bon exemple en est le jeu de données suivant de Superhero Inc. :
La gestion des stocks a été chaotique avec des contrôles irréguliers à différentes dates et un système de gestion des stocks qui aurait vraiment besoin d’un peu d’attention.
En tant qu’humain, nous pouvons facilement extrapoler que la quantité de stock n’a pas été mise-à-jour dans les enregistrement vides parce qu’elle n’a pas changé et que la valeur précédente qui a été remplie s’applique toujours, mais impossible de construire un système là-dessus.
Votre challenge aujourd’hui est donc d’appliquer cette logique à la table en SQL, afin que les cellules vides soient complétées avec la dernière valeur non-nulle. Autrement dit, nous voulons créer la colonne STOCK_AMOUNT_FILLED_OUT comme suit :
Nous savons secrètement que Snowflake a un moyen de faire cela un peu plus facilement que d’autres systèmes. Donc, si vous voulez vraiment vous mettre au défi, vous pouvez essayer de faire ce défi sans utiliser d’outils spécifiques à Snowflake.
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é.
Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.