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

    - Nouveau blog en anglais / New blog in english ! par Le blog de Patrick [MVP SharePoint] le 09-18-2014, 18:42

    - [ #Yammer ] From Mailbox to Yammer and back / De votre messagerie vers Yammer et retour ! par Le blog de Patrick [MVP SharePoint] le 09-15-2014, 11:31

    - [ #Office 365 ] New service settings panel / Nouveau panneau de paramétrage des services par Le blog de Patrick [MVP SharePoint] le 09-11-2014, 08:50

    - Problème de déploiement pour une démo SharePoint/TFS? par Blog de Jérémy Jeanson le 09-10-2014, 21:52

    - [ #Office365 ] Delve first impressions / Premières impressions sur Delve par Le blog de Patrick [MVP SharePoint] le 09-09-2014, 16:57

    - [ #Office365 ] How to change Administration console language ? / Comment changer la langue de la console d’administration ? par Le blog de Patrick [MVP SharePoint] le 09-09-2014, 08:25

    - [ #SharePoint 2013 ] Suppression de bases de données en état “Pas de Réponse” par Le blog de Patrick [MVP SharePoint] le 09-04-2014, 14:10

    - Changer l’adresse d’une ferme Office Web Apps associée à SharePoint par Blog de Jérémy Jeanson le 09-01-2014, 22:21

    - Une ferme #SharePoint 2013 dans @Azure en quelques clics (1ère partie) ! par Le blog de Patrick [MVP SharePoint] le 08-28-2014, 18:52

    - SharePoint 2013: Préparation de la migration - Création des site Templates dans 2010 et 2013 par Blog Technique de Romelard Fabrice le 08-20-2014, 16:31