SQL: TSQL Challenge #10

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

  1. C1   C2   C3  
  2. ---- ---- ----  
  3. 2    1    3  
  4. 3    2    1  
  5. Z    X    Y  
  6. B    C    D  
  7. Y    Z    X  
  8. 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.

  1. C1   C2   C3  
  2. ---- ---- ----  
  3. 1    2    3  
  4. A    B    C  
  5. B    C    D  
  6. X    Y    Z  

Pour plus de clarté. Voici les différentes transformations:

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

  1. DECLARE @t TABLE (  
  2.   c1 CHAR(1),  
  3.   c2 CHAR(1),  
  4.   c3 CHAR(1)  
  5. )  
  6.   
  7. insert into @t (c1, c2, c3) values ('2','1','3')  
  8. insert into @t (c1, c2, c3) values ('3','2','1')  
  9. insert into @t (c1, c2, c3) values ('Z','X','Y')  
  10. insert into @t (c1, c2, c3) values ('B','C','D')  
  11. insert into @t (c1, c2, c3) values ('Y','Z','X')  
  12. insert into @t (c1, c2, c3) values ('B','C','A')  
  13.   
  14. 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.

    Publié mardi 23 juin 2009 23:28 par Rui
    Classé sous , ,
    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 :

    Commentaires


    Les 10 derniers blogs postés

    - SharePoint : Bug sur la gestion des permissions et la synchronisation Office par Blog Technique de Romelard Fabrice le 07-10-2014, 11:35

    - SharePoint 2007 : La gestion des permissions pour les Workflows par Blog Technique de Romelard Fabrice le 07-08-2014, 11:27

    - TypeMock: mock everything! par Fathi Bellahcene le 07-07-2014, 17:06

    - Coding is like Read par Aurélien GALTIER le 07-01-2014, 15:30

    - Mes vidéos autour des nouveautés VS 2013 par Fathi Bellahcene le 06-30-2014, 20:52

    - Recherche un passionné .NET par Tkfé le 06-16-2014, 12:22

    - [CodePlex] Projet KISS Workflow Foundation lancé par Blog de Jérémy Jeanson le 06-08-2014, 22:25

    - Etes-vous yOS compatible ? (3/3) : la feuille de route par Le blog de Patrick [MVP SharePoint] le 06-06-2014, 00:30

    - [MSDN] Utiliser l'approche Contract First avec Workflow Foundation 4.5 par Blog de Jérémy Jeanson le 06-05-2014, 21:19

    - [ #ESPC14 ] TH10 Moving mountains with SharePoint ! par Le blog de Patrick [MVP SharePoint] le 06-01-2014, 11:30