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

    - Etes-vous yOS compatible ? (2/3) : la nouvelle plateforme Yammer–Office 365–SharePoint par Le blog de Patrick [MVP SharePoint] le 04-22-2014, 09:27

    - [ #Yammer ] [ #Office365 ] Quelques précisions sur l’activation de Yammer Entreprise par Le blog de Patrick [MVP SharePoint] le 04-22-2014, 09:03

    - Après Montréal, ce sera Barcelone, rendez-vous à la European SharePoint Conference 2014 ! par Le blog de Patrick [MVP SharePoint] le 04-19-2014, 09:21

    - Emportez votre sélection de la MSDN dans la poche ? par Blog de Jérémy Jeanson le 04-17-2014, 22:24

    - [ #Office365 ] Pb de connexion du flux Yammer ajouté à un site SharePoint par Le blog de Patrick [MVP SharePoint] le 04-17-2014, 17:03

    - NFluent & Data Annotations : coder ses propres assertions par Fathi Bellahcene le 04-17-2014, 16:54

    - Installer un site ASP.net 32bits sur un serveur exécutant SharePoint 2013 par Blog de Jérémy Jeanson le 04-17-2014, 06:34

    - [ SharePoint Summit Montréal 2014 ] Tests de montée en charge SharePoint par Le blog de Patrick [MVP SharePoint] le 04-16-2014, 20:44

    - [ SharePoint Summit Montréal 2014 ] Bâtir un site web public avec Office 365 par Le blog de Patrick [MVP SharePoint] le 04-16-2014, 18:30

    - Kinect + Speech Recognition + Eedomus = Dommy par Aurélien GALTIER le 04-16-2014, 17:17