Voici déjà le dixième challenge de TSQL Challenges !
Je n'ai pas pris le temps de poster sur les solutions et gagnants des Challenges 6 et 7 mais je vous invite à voir mes posts sur celles-ci (en anglais): TSQL Challenge 6 et TSQL Challenge 7.
Une mention spéciale à Aurélien de Wygwam, qui fait partie des gagnants du 6 et du 7, et une autre pour la petite histoire de baston Sql sur le challenge 6 avec Matthieu que l'on a publié ici.
Pour le Challenge #10, voici une traduction pour les francophiles.
En aparté du challenge proprement dit:
TSQL Challenges va désormais proposer du contenu gratuit sous forme de webcast afin d’aider
les challengers qui ont un peu de mal à trouver la solution, et ainsi les aider à résoudre
des problèmes similaires tout à fait concrets.
Le principe est le suivant:
- Si vous pouvez résoudre le challenge, allez y, et envoyez votre solution !
- Si
vous n’y arrivez pas, inscrivez vous au webcast, il est gratuit et vous
indiquera comment résoudre des problèmes ressemblant à celui du
challenge. Le webcast ne sera en ligne qu'une fois le challenge clos. Tous les détails sont indiqués en bas de ce billet.
Le challenge 10
Ce challenge devrait être intéressant, car pour le résoudre, vous allez devoir trier les données horizontalement et verticalement.
Les données en entrée
- C1 C2 C3
-
- 2 1 3
- 3 2 1
- Z X Y
- B C D
- Y Z X
- B C A
C1 C2 C3
---- ---- ----
2 1 3
3 2 1
Z X Y
B C D
Y Z X
B C A
Le résultat attendu
Voici ce qu’il faut produire en sortie. Il faut écrire une seule requête transformant les données d’entrée en données de sortie.
- C1 C2 C3
-
- 1 2 3
- A B C
- B C D
- X Y Z
C1 C2 C3
---- ---- ----
1 2 3
A B C
B C D
X Y Z
Pour plus de clarté. Voici les différentes transformations:
- Trier les données horizontalement, en ordonnant les valeurs de la plus petite à la plus grande.
Par exemple, la première ligne contient les valeurs “2”, “1” et “3”. Il va falloir les ordonner comme suit: ”1”, “2”, et “3”. - Trier
les lignes verticalement. Il s’agit du tri de lignes habituel. Les
lignes doivent être ordonnées comme dans le listing du résultat attendu.
- Supprimer les doublons: les lignes identiques devront être éliminées du résultat.
Données d’exemple
Pour les données en entrée, vous pouvez utiliser ce script.
- DECLARE @t TABLE (
- c1 CHAR(1),
- c2 CHAR(1),
- c3 CHAR(1)
- )
-
- insert into @t (c1, c2, c3) values ('2','1','3')
- insert into @t (c1, c2, c3) values ('3','2','1')
- insert into @t (c1, c2, c3) values ('Z','X','Y')
- insert into @t (c1, c2, c3) values ('B','C','D')
- insert into @t (c1, c2, c3) values ('Y','Z','X')
- insert into @t (c1, c2, c3) values ('B','C','A')
-
- SELECT * FROM @t
DECLARE @t TABLE (
c1 CHAR(1),
c2 CHAR(1),
c3 CHAR(1)
)
insert into @t (c1, c2, c3) values ('2','1','3')
insert into @t (c1, c2, c3) values ('3','2','1')
insert into @t (c1, c2, c3) values ('Z','X','Y')
insert into @t (c1, c2, c3) values ('B','C','D')
insert into @t (c1, c2, c3) values ('Y','Z','X')
insert into @t (c1, c2, c3) values ('B','C','A')
SELECT * FROM @t
Remarques
Comme d’habitude, il faut produire le résultat attendu en une seule requête. Les CTEs sont autorisées.
Envoyez vos réponses à tc@beyondrelational.com
La date de clôture de ce challenge est le 29 juin 2009.
Utilisez ce forum pour poser toute question relative à ce challenge.
Le webcast d’appentissage gratuit
Avec ce challenge, nous commençons à inclure un webcast gratuit afin
d’aider les challengers ne trouvant pas la solution. Le webcast aura
lieu juste après la clôture du challenge.
Les challengers ayant profité du webcast peuvent bien sûr envoyer leur solutions, mais elles seront évalués séparément.
Les
gagnants du challenge seront parmi ceux n’ayant pas assisté au webcast,
et ayant donc envoyé leur solution avant la clôture du challenge. Si
nous apprécions une solution parmi celles proposées par les challengers
ayant bénéficié du webcast, nous la publierons, mais le challenger ne
sera pas identifié parmi les gagnants.
Le webcast n’aura par pour but premier de résoudre le challenge.
Mais plutôt d’expliquer comment écrire une requête ensembliste
transformant des données sous la forme A en données sous la forme B.
Ces techniques et astuces pourront être utilisées pour résoudre le
challenge :-)
Vous pouvez vous inscrire au webcast à l’adresse suivante : http://tsqlchallenge10.eventbrite.com/
Amusez vous bien.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :