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

    - Windows 10 IOT– exploitez vos capteurs en tout genre ! par Blog de Daniel TIZON [daniel] le il y a 4 heures et 59 minutes

    - SharePoint Saturday Paris 2015 c’est le 30 mai ! par Le blog de Patrick [MVP Office 365] le il y a 15 heures et 57 minutes

    - Configurer un écran 5 pouces 800x480 pour Raspberry Pi2 sous Windows 10 IOT par Blog de Daniel TIZON [daniel] le 05-22-2015, 07:52

    - Office 365 : Sway est disponible en preview par Le petit blog de Pierre / Pierre's little blog le 05-21-2015, 22:24

    - Première installation de Raspbian sur RASPBERRY Pi 2 par Blog de Daniel TIZON [daniel] le 05-14-2015, 22:17

    - Mobile Day : c’est le 25 et c’est chez Microsoft! par Fathi Bellahcene le 05-13-2015, 23:48

    - TFS 2013 : Migration d’une ferme TFS 2010 vers 2013 sans upgrade par Blog Technique de Romelard Fabrice le 05-01-2015, 16:28

    - [ #SharePoint 2016 ] frappe à nos portes ! (1/2) par Le blog de Patrick [MVP Office 365] le 04-19-2015, 23:21

    - Lync devient Skype Entreprise par Le petit blog de Pierre / Pierre's little blog le 04-18-2015, 22:47

    - [WCF] Prendre la main sur les protocoles par Blog de Jérémy Jeanson le 04-18-2015, 12:57