Академический Документы
Профессиональный Документы
Культура Документы
Problmes et exercices corrigs sur le langage SQL. Voici une srie de travaux pratiques sur le langage SQL appelant des rponses devant tre crites uniquement partir de requtes, en utilisant le plus souvent possible le jeu de commande du SQL 2 normalis (1999 ou 2003). Les donnes de dpart, comme la structure des tables en jeu et la rponse attendue - sous la forme d'un jeu de rsultat (table) - sont donnes dans chacun des noncs. Pour rpondre ces, questions, rien de plus simple : envoyez-moi vos solutions en utilisant le lien hypertexte ouvrant votre messagerie. Bien entendu, je vous rpond personnellement et vous propose une correction didactique et pdagogique afin que vous compreniez le mcanisme de construction de la requte.
I - Les rgles du jeu.................................................................................................................................................... 3 II - Exercices - 1 partie.............................................................................................................................................. 3 II-A - Problme n 1 - un dans dix ....................................................................................................................... 3 II-B - Problme n2 - le publipostage.................................................................................................................... 5 II-C - Problme n 3 - la date an 2000................................................................................................................. 5 II-D - Problme n 4 - les chambres libres............................................................................................................6 II-E - Problme n 5 - dates d'anniversaire........................................................................................................... 7 II-F - Problme n 6 - numration........................................................................................................................9 II-G - Problme n 7 - le comptage..................................................................................................................... 10 II-H - Problme n 8 - linarisation...................................................................................................................... 10 II-I - Problme n 9 - les trous.............................................................................................................................11 II-J - Problme n 10 - symtrie ngative............................................................................................................12 III - Exercices - 2 partie........................................................................................................................................... 13 III-A - Problme n 11 - premiers.........................................................................................................................13 III-B - Problme n 12 - la traduction.................................................................................................................. 14 III-C - Problme n 13 - scores........................................................................................................................... 15 III-D - Problme n 14 - tranches d'ge.............................................................................................................. 16 III-E - Problme n 15 - titres sans article........................................................................................................... 17 III-F - Problme n 16 - Tri des titres.................................................................................................................. 17 III-G - Problme n 17 - Appariement..................................................................................................................18 III-H - Problme n 18 - Meilleure correspondance.............................................................................................20 III-I - Problme n 19 - La mdiane.....................................................................................................................21 III-J - Problme n 20 - Insertion en bloc............................................................................................................ 22 IV - Exercices - 3 partie........................................................................................................................................... 23 IV-A - Problme n 21 - Ordonner, rordonner !................................................................................................. 23 IV-B - Problme n 22 - Jointure htrogne...................................................................................................... 24 IV-C - Problme n 23 - Insertion conditionnelle................................................................................................. 25 IV-D - Problme n 24 - Un arbre deux niveaux..............................................................................................26 IV-E - Problme n 25 - clater des lignes......................................................................................................... 26 IV-F - Problme n 26 - Noms incrments........................................................................................................ 28 IV-G - Problme n 27 - Une lettre un nom........................................................................................................ 28 IV-H - Problme n 28 - Filtrer les adresses IP.................................................................................................. 29 IV-I - Problme n 29 - Calculer l'adresses IP suivante...................................................................................... 30 IV-J - Problme n 30 - Nombre de jours contigus............................................................................................. 30 V - Exercices - 4 Partie........................................................................................................................................... 31 V-A - Problme n 31 - plus proche valeur......................................................................................................... 31 V-B - Problme n 32 - primes de salaires......................................................................................................... 32 V-C - Problme n 33 - affectations comptables................................................................................................. 32 V-D - Problme n 34 - prcdents (ou suivants)............................................................................................... 33 V-E - Problme n 35 - matchs et victoires.........................................................................................................34 V-F - Problme n 36 - tri btard.........................................................................................................................35 V-G - Problme n 37 - vote contraint.................................................................................................................35 V-H - Problme n 38 - proprit bien garde.................................................................................................... 36 V-I - Problme n 39 - abstract et mots clefs.....................................................................................................37 V-J - Problme n 40 - gestion des stocks.........................................................................................................38
-2Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Vous pouvez utiliser toutes les oprations disponibles dans SQL, y compris les sous requtes dans les clauses SELECT, FROM, WHERE et HAVING, et bien entendu les sous requtes corrles. Vous pouvez ajoutez dans la base une ou plusieurs nouvelles tables et leurs donnes ou encore dfinir autant de vues que vous le voulez,pour concourrir la solution. En revanche vous n'avez pas le droit d'utiliser une UDF (fonction utilisateur), ni une procdure stocke, ni un trigger, ni bien entendu modifier la ou les tables et les donnes l'origine du problme. Tous ces exercices ont une solution et souvent plusieurs ! Pour vous aider rpondre, nous vous donnons : 1 2 3 4 5 la structure de la ou les tables sous la forme d'un ordre SQL CREATE TABLE...; les donnes insrer sous la forme d'un jeu d'ordre SQL INSERT INTO...; le rsultat attendu (lignes rsultant de l'excution de la requte solution); le niveau de difficult not avec des toiles de 1 (facile) 5 (trs difficile); parfois une bauche du rsultat pour vous mettre sur la piste. Pour savoir si votre solution est bonne, comme pour obtenir la solution, envoyez votre rponse ou votre demande par mail en prcisant le titre ou le n du problme.
Cration de la table
CREATE TABLE T_CELKO_TEN_IN_ON_TIO (TIO_ID INTEGER NOT NULL, TIO_1 INTEGER NOT NULL, TIO_2 INTEGER NOT NULL, TIO_3 INTEGER NOT NULL, TIO_4 INTEGER NOT NULL, TIO_5 INTEGER NOT NULL, TIO_6 INTEGER NOT NULL, TIO_7 INTEGER NOT NULL, TIO_8 INTEGER NOT NULL, TIO_9 INTEGER NOT NULL, TIO_10 INTEGER NOT NULL);
T_CELKO_TEN_IN_ON_TIO T_CELKO_TEN_IN_ON_TIO T_CELKO_TEN_IN_ON_TIO T_CELKO_TEN_IN_ON_TIO T_CELKO_TEN_IN_ON_TIO T_CELKO_TEN_IN_ON_TIO T_CELKO_TEN_IN_ON_TIO T_CELKO_TEN_IN_ON_TIO T_CELKO_TEN_IN_ON_TIO T_CELKO_TEN_IN_ON_TIO T_CELKO_TEN_IN_ON_TIO T_CELKO_TEN_IN_ON_TIO
VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES
(1, (2, (3, (4, (5, (6, (7, (8, (9, (10, (11, (12,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1,
0, 0, 0); 1, 0, 0); 7, -8, 5); 0, 9, 0); 0, 0, 0); 1, 0, 0); 0, 0, 1); 0, 0, 0); 0, 0, 0); 0, 0, 0); 1, 1, 1); 0, 0, -1);
Donnes de la table
TIO_ID -------1 2 3 4 5 6 7 8 9 10 11 12 TIO_1 -------0 0 0 0 0 0 0 1 0 0 1 1
TIO_2 -------1 0 1 0 0 0 1 0 0 0 1 0
TIO_3 -------1 0 -2 0 0 0 0 0 0 0 1 0
TIO_4 -------0 0 3 0 0 0 1 0 -1 0 1 0
TIO_5 -------0 0 -4 0 0 0 0 0 0 0 1 0
TIO_6 -------0 0 5 0 -1 -1 0 0 0 0 1 0
TIO_7 -------0 0 -6 0 1 1 0 0 0 0 1 0
TIO_8 -------0 1 7 0 0 1 0 0 0 0 1 0
TIO_9 -------0 0 -8 9 0 0 0 0 0 0 1 0
TIO_10 -------0 0 5 0 0 0 1 0 0 0 1 -1
Il semble que Joe, le concepteur de cette base de donnes veuille stocker des tableaux d'entiers 10 cellules. Le problme qui est soulev, c'est que notre quidam veut obtenir en une seule requte : 1 2 les lignes de la table dont toutes les cellules f1 f10 sont zro sauf une, les lignes de la table dont toutes les cellules f1 f10 sont zro sauf une value un.
Les rsultats attendus : Les lignes de la table dont toutes les cellules f1 f10 sont zro sauf une :
TIO_ID -------2 4 8 9 TIO_1 -------0 0 1 0 TIO_2 -------0 0 0 0 TIO_3 -------0 0 0 0 TIO_4 -------0 0 0 -1 TIO_5 -------0 0 0 0 TIO_6 -------0 0 0 0 TIO_7 -------0 0 0 0 TIO_8 -------1 0 0 0 TIO_9 -------0 9 0 0 TIO_10 -------0 0 0 0
Les lignes de la table dont toutes les cellules f1 f10 sont zro sauf une value un :
TIO_ID -------2 8 TIO_1 -------0 1 TIO_2 -------0 0 TIO_3 -------0 0 TIO_4 -------0 0 TIO_5 -------0 0 TIO_6 -------0 0 TIO_7 -------0 0
TIO_8 -------1 0
TIO_9 -------0 0
TIO_10 -------0 0
-4Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Il existe de multiples solutions ce problme et j'en dcouvre une nouvelle tous les mois... A vous de jouer ! cliquez pour rpondre et titrez votre mail "Problme n 1 - un dans dix, ma solution"
Le but tant de fournir une rponse dans laquelle chaque ligne de la table PERSON est recopi autant de fois que spcifi par la valeur de la colonne NOMBRE. Comment faire, en une requte et une seule, pour obtenir la rponse :
PRS_NOM ---------------MARTIN MARTIN MARTIN DUPOND DUPOND PRS_VILLE ---------------PARIS PARIS PARIS STRASBOURG STRASBOURG
Vous ne pouvez pas modifier la structure de la table ni modifier les donnes, mais vous avez le droit de vous aider en utilisant ou en crant d'autres lments dans la base de donnes... A vous de jouer ! cliquez pour rpondre et titrez votre mail "Problme n2 - le publipostage"
-5Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Notre dveloppeur a dcid d'ajouter une nouvelle colonne 'AMT_FIN_Y2K' de type CHAR(10) cette fois, et aimerais votre aide pour rtablir toutes les anciennes dates au bon format. Aucune date n'est antrieure au 1/1/1960. Sauriezvous l'aider ??? Je vous prcise que la date doit tre stocke dans cette base de donnes sous la forme AAAA-MM-JJ (format ISO). Voici un extrait des donnes de cette table intitul T_AMORTISSEMENT_AMT
CREATE TABLE T_AMORTISSEMENT_AMT (AMT_FIN CHAR(6), AMT_FIN_Y2K CHAR(10)); INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO T_AMORTISSEMENT_AMT T_AMORTISSEMENT_AMT T_AMORTISSEMENT_AMT T_AMORTISSEMENT_AMT T_AMORTISSEMENT_AMT (AMT_FIN) (AMT_FIN) (AMT_FIN) (AMT_FIN) (AMT_FIN) VALUES VALUES VALUES VALUES VALUES ('990601'); ('970201'); ('021201'); ('941101'); ('920715');
Le SQL de A Z par SQLPro (autres articles) (Blog) INSERT INTO T_CHAMBRE_CHB VALUES (4) ; INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO T_PLANNING_PLN T_PLANNING_PLN T_PLANNING_PLN T_PLANNING_PLN T_PLANNING_PLN VALUES VALUES VALUES VALUES VALUES ('2000-01-12', ('2000-01-12', ('2000-01-13', ('2000-01-13', ('2000-01-13', 1, 2, 1, 2, 4, 'False') 'False') 'False') 'False') 'True' ) ; ; ; ; ;
Sauriez-vous retrouver, l'aide d'une requte SQL de votre cru, 1) les chambres qui sont libre pendant toute la priode allant du 11 au 14 janvier 2000 ? 2) l'occupation des chambres pour la journe du 13 janvier 2000 ? 3) le planning des occupations pour toutes les chambres et toutes les dates du 11 au 14 janvier 2000 ? Les rponses attendues sont les suivantes : 1) Chambres libres priode du 11 au 14 janvier 2000
CHB_NUM ----------3 4
cliquez pour rpondre et titrez votre mail "Problme n4 - les chambres libres"
Le SQL de A Z par SQLPro (autres articles) (Blog) CLI_DATE_NAISSANCE DATE); INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI T_CLIENT_CLI VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES (24, (25, (26, (27, (28, (29, (30, (31, (32, (33, (34, (35, (36, (37, (38, (39, (40, (41, (42, (44, (45, (46, 'HESS', 'CHATON', 'PLATONOFF', 'LETERRIER', 'MONTEIL', 'SPITHAKIS', 'ORELL', 'MARTINET', 'RAY', 'TARSAC', 'COULOMB', 'SAVY', 'DAVID', 'FORGEOT', 'BERGER', 'DOUBLET', 'MATHIEU', 'MOURGUES', 'PIERROT', 'ZAMPIERO', 'PASCOT', 'MECHRI', '1984-08-30') ; '1938-12-31') ; '1960-03-29') ; '1945-08-26') ; '1985-03-23') ; '1956-03-31') ; '1996-01-27') ; '1946-10-24') ; '1979-12-20') ; '1992-08-14') ; '1963-01-01') ; '1942-10-03') ; '1922-09-19') ; '1989-09-13') ; '1946-10-16') ; '1961-03-02') ; '1990-02-24') ; '1953-01-14') ; '1933-02-11') ; '1985-01-19') ; Null ) ; '1950-08-11');
CLI_ID ----------24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46
CLI_NOM ---------------HESS CHATON PLATONOFF LETERRIER MONTEIL SPITHAKIS ORELL MARTINET RAY TARSAC COULOMB SAVY DAVID FORGEOT BERGER DOUBLET MATHIEU MOURGUES PIERROT ZAMPIERO PASCOT MECHRI
CLI_DATE_NAISSANCE -----------------1934-08-30 1938-12-31 1960-03-29 1945-08-26 1935-03-23 1956-03-31 1956-01-27 1946-10-24 1939-12-20 1942-08-14 1963-01-01 1942-10-03 1922-09-19 1949-09-13 1946-10-16 1961-03-02 1940-02-24 1953-01-14 1933-02-11 1945-01-19 NULL 1950-08-11
Le problme est, par exemple, d'extraire les clients qui vont avoir leur anniversaire entre : 1) le 21 fvrier et le 20 mars ; 2) le 21 dcembre au 20 janvier ; 3) n'importe quelle fourchette de date (mme cheval sur deux annes). Les rponses attendues sont les suivantes : 1) Anniversaires entre le 21 fvrier et le 20 mars
CLI_ID ----------39 40 CLI_NOM ---------------DOUBLET MATHIEU
-8Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
A vos requtes... cliquez pour rpondre et titrez votre mail "Problme n 5 - dates d'anniversaire"
Sauriez vous faire une telle requte avec un seul update ? Voici un extrait de la table des donnes insrer :
NOMBRE ----------10 11 12 13 14 ... 9995 9996 9997 9998 9999
cliquez pour rpondre et titrez votre mail " Problme n 6 - numration "
-9Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
A vos requtes ! cliquez pour rpondre et titrez votre mail " Problme n 7 comptage "
- 10 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Sauriez vous aider Opaz et prsenter ce ssulta en une seule requte ??? cliquez pour rpondre et titrez votre mail " Problme n8 - linarisation "
- 11 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Le SQL de A Z par SQLPro (autres articles) (Blog) INSERT INTO T_NUMERO_NMR VALUES (15);
Je suppose que Guillaume veut grer les trous de clefs gnrs par les suppressions d'enregistrements afin d'en rcuprer la place... C'est en gnral une fort mauvaise ide. Mais sauriez vous quand mme dpanner Guillaume ? Donc rcuprer tous les trous ? En une seule requte videmment ! Voici une image du rsultat :
TROU ----------4 7 13
cliquez pour rpondre et titrez votre mail " Problme n9 - les trous "
INSERT INTO T_FACTURE_FAC VALUES(56, '2001-08-11') ; INSERT INTO T_FACTURE_FAC VALUES(79, '2001-08-17') ; INSERT INTO T_FACTURE_FAC VALUES(101,'2001-09-01'); INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO T_LIGNE_FACTURE_LIF T_LIGNE_FACTURE_LIF T_LIGNE_FACTURE_LIF T_LIGNE_FACTURE_LIF T_LIGNE_FACTURE_LIF T_LIGNE_FACTURE_LIF T_LIGNE_FACTURE_LIF T_LIGNE_FACTURE_LIF T_LIGNE_FACTURE_LIF T_LIGNE_FACTURE_LIF T_LIGNE_FACTURE_LIF T_LIGNE_FACTURE_LIF FAC_DATE -----------2001-08-11 2001-08-17 2001-09-01 FAC_NUM ----------56 56 56 56 56 LIF_ARTICLE ---------------Cartable Crayons Trousse Feutres Ardoise LIF_MONTANT -----------------123.50 17.52 29.99 11.25 44.21 VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES (11, (13, (15, (16, (18, (19, (21, (22, (27, (28, (32, (33, 56, 'Cartable', 123.50) ; 56, 'Crayons', 17.52) ; 56, 'Trousse', 29.99) ; 56, 'Feutres', 11.25) ; 56, 'Ardoise', 44.21) ; 79, 'Cigarettes', 21.55) ; 79, 'Whisky', 147.65) ; 79, 'Petite pp', 12857.59) ; 101, 'Savon', 16.24) ; 101, 'Serviette', 45.00) ; 101, 'Shampoing', 44.22) ; 101, 'Bain moussant', 118.40);
- 12 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Le SQL de A Z par SQLPro (autres articles) (Blog) 19 21 22 27 28 32 33 79 79 79 101 101 101 101 Cigarettes Whisky Petite pp Savon Serviette Shampoing Bain moussant 21.55 147.65 12857.59 16.24 45.00 44.22 118.40
Mais voil... La facture n79 (lignes en gras) doit tre annule et pour ce faire, on doit recopier les lignes de la table T_LIGNE_FACTURE_LIF correspondant cette facture, tout en rpondant deux critres bien prcis : - la clef de ces nouvelles lignes doit tre ngative - l'ordre de ces nouvelles lignes doit tre le mme que les lignes d'origine... - les montants doivent tre ngatifs Sauriez vous alimenter ces nouvelles lignes et extraire le rsultat global comme ceci ?
FAC_NUM ----------56 56 56 56 56 79 79 79 79 79 79 101 101 101 101 LIF_ARTICLE ---------------Cartable Crayons Trousse Feutres Ardoise Cigarettes Cigarettes Whisky Whisky Petite pp Petite pp Savon Serviette Shampoing Bain moussant LIF_MONTANT -----------------123.50 17.52 29.99 11.25 44.21 21.55 -21.55 -147.65 147.65 12857.59 -12857.59 16.24 45.00 44.22 118.40
On constate que la clause de tri provoque l'apparition de la ligne de contrepassation d'criture juste aprs la ligne de l'criture comptable originale... A vous de jouer ! cliquez pour rpondre et titrez votre mail " Problme n10 - symtrie ngative "
- 13 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Le SQL de A Z par SQLPro (autres articles) (Blog) INSERT INTO T_ENTIER_ENT VALUES (8); INSERT INTO T_ENTIER_ENT VALUES (9); ... ENT_N -----0 1 2 3 4 5 6 7 8 9 ...
C'est plus facile que cela en l'air, si l'on se souvient qu'un nombre premier est un nombre qui n'est divisible que par lui mme et 1. Ou plutt qu'un nombre qui n'est pas premier est divisible par un nombre compris entre 2 et luimme moins un... En l'occurrence, le rsultat doit tre le suivant :
ENT_N ----------0 1 2 3 5 7 11 13 17 19 23 29 31 ...
On pourra bien entendu disserter ternellement sur la fait que 0 est premier ou non ! Mais sauriez vous exprimer la solution en une seule requte ? cliquez pour rpondre et titrez votre mail " Problme n11 - premiers "
En gros, je veux les rsultats, de prfrence en francais, mais si il n'y a pas de ligne pour le franais, alors je voudrais la ligne pour la langue anglaise." Est-ce possible ? Voici le jeu d'essais avec lequel j'ai travaill :
- 14 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Le SQL de A Z par SQLPro (autres articles) (Blog) CREATE TABLE (TDR_ID TDR_LANGUE TDR_LIBELLE INSERT INSERT INSERT INSERT INTO INTO INTO INTO T_TRADUCTION_TDR INTEGER, VARCHAR(8), VARCHAR(256)); VALUES VALUES VALUES VALUES (1, (1, (3, (4, 'Franais', 'Anglais', 'Franais', 'Anglais', 'Erreur irrcuprable'); 'Fatal error'); 'Disque satur'); 'Memory fault');
Quelques-uns de mes collgues ont trouv d'lgantes solutions... Sauriez vous trouver au moins une faon de faire ? Voici en tout cas le rsultat attendu :
TDR_LIBELLE -------------------------Erreur irrcuprable Disque satur Memory fault TDR_ID ----------1 3 4 TDR_LANGUE ---------Franais Franais Anglais
A vos claviers ! cliquez pour rpondre et titrez votre mail " Problme n12 - traduction "
Sauriez vous trouver une rponse pour qu'en une seule requte apparaisse la rponse suivante :
PNL_NOM ---------------Paul Pierre BONNES_REPONSES --------------4 2
- 15 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
A vos claviers ! cliquez pour rpondre et titrez votre mail " Problme n13 - scores "
CLI_ID ----------24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
CLI_NOM ---------------HESS CHATON PLATONOFF LETERRIER MONTEIL SPITHAKIS ORELL MARTINET RAY TARSAC COULOMB SAVY DAVID FORGEOT BERGER DOUBLET MATHIEU MOURGUES PIERROT
CLI_DATE_NAISSANCE -----------------1934-08-30 1938-12-31 1960-03-29 1945-08-26 1935-03-23 1956-03-31 1956-01-27 1946-10-24 1939-12-20 1942-08-14 1963-01-01 1942-10-03 1922-09-19 1949-09-13 1946-10-16 1961-03-02 1940-02-24 1953-01-14 1933-02-11
- 16 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Le SQL de A Z par SQLPro (autres articles) (Blog) 44 45 46 ZAMPIERO PASCOT MECHRI 1945-01-19 NULL 1950-08-11
Sauriez vous rpondre notre internaute et de faon gnrique, c'est dire quelle que soit les futures tranches d'ge grer ? cliquez pour rpondre et titrez votre mail " Problme n14 - tranches d'age "
SELECT TITRES FROM OUVRAGES TITRE ---------------------------------Le journal de Raymond Le vlo d'Alphonse Dcouvrir l'escalade L'ge du capitaine Comment dvisser la vis D'amour et d'eau fraiche
Contenu de la table
??? TITRE ---------------------------------journal de Raymond (Le) vlo d'Alphonse (Le) Dcouvrir l'escalade ge du capitaine (L') Comment dvisser la vis amour et d'eau fraiche (D')
Rsultat attendu
Une colle finalement assez facile. Je l'ai rsolue en 10 minutes... Sauriez vous tre aussi performant que moi ??? Sauriez vous rpondre notre internaute ? cliquez pour rpondre et titrez votre mail " Problme n15 - titres sans article "
leur criture en lettre... Autrement dit "2001 l'odysse de l'espace', doit figurer aprs "Ben Hur" et avant "Double assassinat dans la rue morgue. Sauriez vous lui rpondre ? Exemple :
CREATE TABLE T_LIVRE_LVR (LVR_TITRE VARCHAR(64)); INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO T_LIVRE_LVR T_LIVRE_LVR T_LIVRE_LVR T_LIVRE_LVR T_LIVRE_LVR T_LIVRE_LVR VALUES VALUES VALUES VALUES VALUES VALUES (' la recherche du temps perdu'); ('La bible') ; ('2001 l''odysse de l''espace'); ('Ben Hur'); ('Double assassinat dans la rue morgue'); ('Les trois mousquetaires');
Si vous avez brillament rpondu notre prcdent puzzle, alors vous devriez solutionner celui l ! Voici le rsultat attendu :
LVR_TITRE --------------------------------------------------------------- la recherche du temps perdu Ben Hur 2001 l'odysse de l'espace Double assassinat dans la rue morgue La bible Les trois mousquetaires
cliquez pour rpondre et titrez votre mail " Problme n16 - tri des titres "
- 18 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Le SQL de A Z par SQLPro (autres articles) (Blog) INSERT INSERT INSERT INSERT INTO INTO INTO INTO T_PAIRE_PER T_PAIRE_PER T_PAIRE_PER T_PAIRE_PER VALUES VALUES VALUES VALUES ('A9', ('A9', ('A9', ('A9', 'B1'); 'B4'); 'B8'); 'B3');
Pour bien comprendre le problme, nous allons analyser ensemble les deux premires valeurs de la colonne A. Dmarrons avec la valeur 'A1' de la colonne PER_1 :
PER_1 ----A1 A1 A2 A2 A3 A3 A3 A3 A4 A4 A5 A6 A6 A6 A6 A8 A8 A8 A8 A9 A9 A9 A9 PER_2 ----B1 B2 B1 B3 B1 B3 B7 B4 B1 B3 B2 B1 B4 B7 B3 B1 B4 B7 B3 B1 B4 B8 B3 PER_1 ----A1 A1 A2 A2 A3 A3 A3 A3 A4 A4 A5 A6 A6 A6 A6 A8 A8 A8 A8 A9 A9 A9 A9 PER_2 ----B1 B2 B1 B3 B1 B3 B7 B4 B1 B3 B2 B1 B4 B7 B3 B1 B4 B7 B3 B1 B4 B8 B3
Pour la valeur 'A1' de la colonne PER_1, la colonne PER_2 possde les valeurs : 'B1' et 'B2'. Quelles sont les autres valeurs de PER_1 qui ont en regard les valeurs 'B1' et 'B2' dans la colonne PER_2 ?
Aucune autre valeur de PER_1 n'a simultanment les valeurs 'B1' et 'B2' dans la colonne PER_2
- 19 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Pour la valeur 'A2' de la colonne PER_1, la colonne PER_2 possde les valeurs : 'B1' et 'B3'. Quelles sont les autres valeurs de PER_1 qui ont en regard les valeurs 'B1' et 'B3' dans la colonne PER_2 ?
'A3', 'A4', 'A6', 'A8' et 'A9' ont simultanment les valeurs 'B1' et 'B3' dans la colonne PER_2 mais certaines occurrences ('A3', 'A6', 'A8' et 'A9') ont en sus d'autres valeurs... Seule la valeur A4 est donc retenir.
Ici les seuls rsulats valables sont 'A2' avec 'A4', puis 'A3' avec 'A6' et 'A8'. En effet les donnes de la colonne PER_2 sont identiques pour 'A2' et 'A4' ('B1' et 'B3'). Les donnes de la colonne B sont aussi identiques pour 'A3', 'A6' et 'A8', (' B1', 'B3', 'B4', 'B7'). Le rsultat doit donc tre :
PER_1 ----A2 A3 A4 A6 A8
Simple en apparence, ce problme s'avre en fin de compte assez complexe. Mais j'ai dj commenc le travail de dcortication pour vous mettre sur la voie... cliquez pour rpondre et titrez votre mail " Problme n17 - appariement "
- 20 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Pour chaque RTE_DESTINATION, je recherche la partie de la colonne RTE_CODE dont les donnes sont communes dans le sens de lecture. Notre quidam essaye donc de trouver les meilleures correspondances partielles de RTE_CODE communes une mme famille de RTE_DESTINATION. Notez qu'il s'agit d'ailleurs d'une opration proche d'un calcul d'agrgat... Dans l'exemple donn, la requte doit renvoyer :
RTE_DESTINATION -------------------albania-Mobile BOUYGE_TEL SFR-Mobile RTE_CODE --------------00355 0078452 0077
En effet, '00355' est la plus grande partie commune commenant chaque RTE_CODE pour 'albania-Mobile', de mme '0078452' pour 'BOUYGE_TEL' et de mme '0077' pour 'SFR-Mobile'. Autrementy dit, quelle est la partie de RTE_DESTINATION correspondant aux premiers caractres communs chaque occurence de la colonne RTE_CODE. Simple, mais comment faire ? cliquez pour rpondre et titrez votre mail " Problme n18 meilleure correspondance "
La solution tant :
STT_VALEUR ---------23.0
2) les donnes calcules sont toutes diffrentes (il n'y a pas de doublon) et en nombre paires : Rajoutons au jeu prcdent la ligne :
INSERT INTO T_STATISTIQUES_STT VALUES (6, 23.5);
La solution devient :
- 21 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
3) voyons ce qu'il se passe avec des valeurs identiques multiples et un nombre de lignes impair : Rajoutons au jeu prcdent les lignes :
INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO T_STATISTIQUES_STT T_STATISTIQUES_STT T_STATISTIQUES_STT T_STATISTIQUES_STT T_STATISTIQUES_STT VALUES VALUES VALUES VALUES VALUES (7, 22.0); (8, 22.0); (9, 22.0); (10, 22.0); (11, 22.0);
La solution devient :
STT_VALEUR ---------22.0
C'est le genre de problme qui a passionn les spcialistes de SQL que sont Joe Celko et Chris Date. Sauriez vous au moins traiter le cas n 1 ? cliquez pour rpondre et titrez votre mail " Problme n19 - mediane "
... et une table de jointure associant les deux, table actuellement vide :
CREATE TABLE T_OBJET_COULEUR_OBC (OBJ_OBJET VARCHAR(16), CLR_COULEUR VARCHAR(8));
- 22 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Le SQL de A Z par SQLPro (autres articles) (Blog) OBJ_OBJET ---------------feu tricolore feu tricolore feu tricolore drapeau franais drapeau franais drapeau franais CLR_COULEUR ----------vert rouge orange blanc bleu rouge
Sauriez-vous trouver en une seule requte comment procder l'insertion massive de ces six lignes ? cliquez pour rpondre et titrez votre mail " Problme n20 - insertion en bloc "
SELECT * FROM T_PAYS_PAY; PAY_NOM ---------------Allemagne Belgique Croatie Espagne France Grce PAY_POSITION -----------1 2 3 4 5 6
Notre utilisateur cherche recombiner l'ordre de la liste en faisant passer la France en tte, sans pour autant bousculer l'ordre des autres pays. Tant est si bien que finalement, aprs cette requte de mise jour, la table doit apparatre comme ceci :
PAY_NOM ---------------Allemagne Belgique Croatie Espagne France Grce PAY_POSITION -----------2 3 4 5 1 6
2) Pourriez-vous proposer une solution gnrique pour cette permutation d'ordre de tri ? Nous allons corser le problme en admettant que la colonne PAY_POSITION puisse prendre des valeurs non continues : Voici donc les nouvelles conditions du jeu d'essai :
DELETE FROM T_PAYS_PAY; INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO T_PAYS_PAY T_PAYS_PAY T_PAYS_PAY T_PAYS_PAY T_PAYS_PAY T_PAYS_PAY VALUES VALUES VALUES VALUES VALUES VALUES ('Allemagne', 11); ('Belgique', 8); ('Croatie', 9); ('Espagne', 5); ('France', 12); ('Grce', 7);
PAY_POSITION -----------5 7 8 9 11 12
3) Sauriez-vous renumroter les positions en continuit de 1 n (n tant le nombre de lignes dans la table) quelque soit les donnes de la colonne position, mais en gardant toujours le mme ordre... ? Et, en partant des donnes ci dessus, obtenir le rsultat suivant :
PAY_NOM ---------------Espagne Grce Belgique Croatie Allemagne France PAY_POSITION -----------1 2 3 4 5 6
A vos claviers... cliquez pour rpondre et titrez votre mail "Problme n21 - Ordonner, rordonner"
INSERT INTO T_PUBLIC_PBL VALUES (1, 'particulier'); INSERT INTO T_PUBLIC_PBL VALUES (3, 'entreprise'); INSERT INTO T_PUBLIC_PBL VALUES (2, 'groupe');
- 24 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Le SQL de A Z par SQLPro (autres articles) (Blog) INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO T_PRESTATION_PST T_PRESTATION_PST T_PRESTATION_PST T_PRESTATION_PST T_PRESTATION_PST VALUES VALUES VALUES VALUES VALUES (1, (2, (3, (4, (5, 'Tour en voiture', 'Comptition plusieurs', 'Course d''endurance ', 'Bapteme ', 'Course en tandem ', '[3]'); '[3].[2]'); '[1].[2]'); '[1]'); '[2]');
Il modlise des prestations sportives en visant diffrents publics. Les donnes sont donc les suivantes :
SELECT * FROM T_PUBLIC_PBL PBL_ID PBL_NOM ----------- ---------------1 particulier 3 entreprise 2 groupe
SELECT * FROM T_PRESTATION_PST PST_ID PST_LIBELLE PST_PUBLIC ----------- ------------------------- ---------------------1 Tour en voiture [3] 2 Comptition plusieurs [3].[2] 3 Course d'endurance [1].[2] 4 Bapteme [1] 5 Course en tandem [2]
Et notre internaute voudrait raliser la jointure entre la colonne PBL_ID de la table T_PUBLIC_PBL et chacune des valeurs situes entre crochets de la colonne PST_PUBLIC de la table T_PRESTATION_PST., Bref, en une requte sauriez vous afficher les donnes comme ceci :
PBL_ID ----------3 2 3 1 2 1 2 PBL_NOM ------------entreprise groupe entreprise particulier groupe particulier groupe PST_ID -----------1 2 2 3 3 4 5 PST_LIBELLE ------------------------Tour en voiture Comptition plusieurs Comptition plusieurs Course d'endurance Course d'endurance Bapteme Course en tandem PST_PUBLIC ---------------[3] [3].[2] [3].[2] [1].[2] [1].[2] [1] [2]
cliquez pour rpondre et titrez votre mail "Problme n22 - Jointure htrogne"
Pourriez-vous : 1) crer une requte INSERT dans cette table avec les valeurs 1, toto et faire en sorte que rien ne soit insr sans gnrer d'erreur ? 2) insrer 3, tutu avec cette mme requte ?? cliquez pour rpondre et titrez votre mail "Problme n23 - Insertion conditionnelle"
- 25 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
A vous de jouer ! cliquez pour rpondre et titrez votre mail "Problme n24 - Arbre deux niveaux"
Le SQL de A Z par SQLPro (autres articles) (Blog) ID_REF INTEGER, QUANTITE INTEGER); INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO LIGNE LIGNE LIGNE LIGNE LIGNE LIGNE (ID_LIGNE, (ID_LIGNE, (ID_LIGNE, (ID_LIGNE, (ID_LIGNE, (ID_LIGNE, ID_REF, ID_REF, ID_REF, ID_REF, ID_REF, ID_REF, QUANTITE) QUANTITE) QUANTITE) QUANTITE) QUANTITE) QUANTITE) VALUES VALUES VALUES VALUES VALUES VALUES (1, (2, (3, (4, (5, (6, 1, 2, 3, 1, 2, 4, 4); 1); 2); 1); 2); 2);
Observez bien la manire dont est construite cette table rponse : SERIE est un incrment dpendant uniquement de ID_REF, avec comme particularit qu'il doit clater et numroter l'intrieur d'un mme ID_REF et dans l'ordre ID_LIGNE, des lignes dont le nombre figure dans QUANTITE. Autrement dit si pour ID_REF = 1, QUANTITE = 4, il y aura 4 lignes avec ce mme ID_REF. Si pour ce mme ID_REF de 1 il y a une ID_LIGNE diffrente, alors la numrotation doit de poursuivre en squence... Voici une prsentation qui met en correspondance les lignes de la table sources avec la table rponse :
ID_REF ----------1 1 1 1 1 2 2 2 3 3 4 4 ID_LIGNE ----------1 1 1 1 4 2 5 5 3 3 6 6 QUANTITE ----------4 4 4 4 1 1 2 2 2 2 2 2 ID_REF ID_ARTICLE ----------1 1 1 1 1 2 2 2 3 3 10 4 11 ID_LIGNE ----------1 1 1 1 4 2 5 5 3 3 6 SERIE ----------1 2 3 4 5 1 2 3 1 2 1 ----------1 2 3 4 5 6 7 8 9
- 27 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
12
Les lignes grise reprsentent des doublons de la ligne prcdente. D'ou lide d'clater chaque ligne en autant de fois que l'indique la valeur de QUANTITE... cliquez pour rpondre et titrez votre mail "Problme n25 - clater des lignes"
Par exemple; si je tente de rentrer DUPOND, il doit insrer DUPOND. Si je tente de rentrer DUPONT, il doit insrer DUPONT1. Si je tente de rentrer DURAND, il doit insrer DURAND2... Comment faire cela en une seule requte ? cliquez pour rpondre et titrez votre mail "Problme n26 - Noms incrments"
- 28 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
INSERT INTO T_CONTACT_CTC VALUES ('Zoltan'); LETTRE --------A B C ... Z CTC_NOM ------------------------Aaron Babet Cabu Zoltan
Mais n'ayons pas peur d'aller plus loin en posant quelques questions supplmentaires... variante 1 : obtenir les noms des "secondes" personnes variante 2 : obtenir les noms des niemes personnes variante 3 : obtenir les noms des niemes personnes, mais si elle n'existe pas, alors la dernire !
variante 1 : obtenir les noms des "secondes" personnes LETTRE CTC_NOM ------ -------------------------------A Aaron B Babet C Cabu Z Zoltan LETTRE CTC_NOM ------ -------------------------------B Brouard C Corts LETTRE CTC_NOM ------ -------------------------------A Abel B Boudet C Cardeau Z Zoltan
variante 2 : (n = 3)
variante 3 : (n = 2) obtenir les noms des niemes personnes, mais si elle n'existe pas, alors la dernire !
Comment faire cela et toujours en une seule requte ? cliquez pour rpondre et titrez votre mail "Problme n27 - Une lettre un nom"
10.120.12.1 correspond l'attribut DebutIPValide dans la table X 10.130.23.1 correspond l'attribut FinIPValide dans la table X adresseSource fait partie de la table Y Merci pour vos suggestions
Sauriez vous l'aider ? Voici la table des adresses IP et quelques lignes bien suffisantes pour tester votre travail :
CREATE TABLE TIP (TIP_ADR VARCHAR(15));
- 29 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Le SQL de A Z par SQLPro (autres articles) (Blog) INSERT INSERT INSERT INSERT INTO INTO INTO INTO TIP TIP TIP TIP VALUES VALUES VALUES VALUES ('10.120.12.1'); ('10.130.23.1'); ('10.130.201.1'); ('10.13.11.1');
Simple ? Pas sr ! A vos codes... cliquez pour rpondre et titrez votre mail "Problme n28 - Filtrer les adresses IP"
Raisonnez petits pas. Emboitez vos requtes... cliquez pour rpondre et titrez votre mail "Problme n29 - Calculer l'adresse IP suivante
Voici les donnes qui nous servirons de test et la structure de la table associe :
CREATE TABLE T_PLANNING_PNG (PNG_DATE DATE); INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO T_PLANNING_PNG T_PLANNING_PNG T_PLANNING_PNG T_PLANNING_PNG T_PLANNING_PNG T_PLANNING_PNG T_PLANNING_PNG T_PLANNING_PNG VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES ('2004-01-01'); ('2004-01-02'); ('2004-01-03'); ('2004-01-15'); ('2004-01-16'); ('2004-01-17'); ('2004-01-18'); ('2004-01-30');
Aidez-vous d'une table des dates... cliquez pour rpondre et titrez votre mail "Problme n30 - Nombre de jours contigus
C'est plus facile que cela en l'air, si l'on se souvient qu'un nombre premier est un nombre qui n'est divisible que par lui mme et 1. Ou plutt qu'un nombre qui n'est pas premier est divisible par un nombre compris entre 2 et luimme moins un... En l'occurrence, le rsultat doit tre le suivant :
RDV_DATE ------------2008-01-11
Testez donc votre solution avec une demande de rendez-vous le 23 janvier 2008...
- 31 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
cliquez pour rpondre et titrez votre mail " Problme n31 - plus proche valeur "
Et le rsultat attendu :
PRM_EMPLOYE -----------JAN JOE JOE JOE LUC LUC LUC LUC LUC LUC LUC LUC LUC LUC LUC LUC ECHEANCE --------1 1 2 3 1 2 3 4 5 6 7 8 9 10 11 12 MONTANT -----------1000.00 333.33 333.33 333.34 83.33 83.33 83.33 83.33 83.33 83.33 83.33 83.33 83.33 83.33 83.33 83.37
A vos claviers ! cliquez pour rpondre et titrez votre mail " Problme n32 - primes de salairesr "
- 32 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Rgles d'affectation :
compte ---------6????? 6????? 6????? 612??? 612???
Bref, partir de rgles d'affectation comptable un peu "floues" du fait de caractres gnriques, il convient de trouver la meilleure affectation comptable des donnes... Voici les tables avec lesquelles nous allons devoir tablir notre requte, et les donnes du jeu d'essai :
CREATE TABLE T_COMPTE_CPT (CPT_COMPTE CHAR(6), CPT_ANA CHAR(5), CPT_MONTANT DECIMAL(16,2)); CREATE TABLE T_AFFECTATION_AFC (AFC_COMPTE CHAR(6), AFC_ANA CHAR(5), AFC_AFFECT CHAR(4)); INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO T_COMPTE_CPT T_COMPTE_CPT T_COMPTE_CPT T_COMPTE_CPT T_COMPTE_CPT VALUES VALUES VALUES VALUES VALUES ('612000', ('612000', ('612101', ('654000', ('654102', '26045', '12345', '33556', '26346', '28333', 260.50); 130.40); 330.50); 33.55); 180.10); 'T124'); 'T028'); 'T033'); 'T125'); 'T126');
Je vous ais d'ailleurs dj facilit la vie en remplacant les ? par des _ ! Vous connaissez dj le rsultat attendu, alors en piste ! Sachez cepandant qu'une lgante solution passe par l'ajout de donnes... cliquez pour rpondre et titrez votre mail " Problme n33 - affectations comptables "
Le SQL de A Z par SQLPro (autres articles) (Blog) INSERT INTO T_LIGNE_PRECEDENTE VALUES ('DDD');
D'ailleurs est-il possible d'informer de la ligne suivante et de la prcdente en mme temps ? cliquez pour rpondre et titrez votre mail " Problme n34 - prcdente et suivants "
TABLE T_MATCH_MCH
MCH_ID -----------1 2 3 4 JOR_ID1 -----------1 3 2 3 JOR_ID2 -----------3 2 1 1 MCH_SCORE_JOUEUR1 -----------------21 17 21 21 MCH_SCORE_JOUEUR2 -----------------15 21 13 10
Rsultat attendu :
JOR_ID ------------1 2 3 JOR_NOM -------------Dupont Camus Mercier NB_MATCHS ------------2 3 3 NB_VICTOIRES --------------1 2 1
- 34 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
1, 3, 2, 3,
3, 2, 1, 1,
cliquez pour rpondre et titrez votre mail " Problme n35 - matchs et victoires "
cliquez pour rpondre et titrez votre mail " Problme n36 - tri btard "
- 35 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Le SQL de A Z par SQLPro (autres articles) (Blog) CREATE TABLE T_SCHNORKELZIG_SKZ (SKZ_JURY VARCHAR(16) NOT NULL PRIMARY KEY, SKZ_MARC INT, SKZ_PAUL INT, SKZ_JEAN INT, SKZ_LEON INT)
Votre mission, si vous l'acceptez, sera d'crire les contraintes ncessaires valider la saisie et empcher notamment des erreurs telles que :
SKZ_JURY SKZ_MARC SKZ_PAUL SKZ_JEAN SKZ_LEON ----------- ----------- ----------- ----------- ----------MOULIN 1 3 5 11 --> restreindre le vote 1,2,3,4 DUVAL 1 NULL 3 4 --> squence incorrecte, aurait d tre 1, NULL, 2, 3 SCHMIDT 1 1 2 3 --> doublon (prsence du 1 deux fois)
Voici deux jeux d'essais. Le premier doit voir toutes ses lignes acceptes, le second aucune... podiums corrects
INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO
T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ
VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES
('JRY001', ('JRY002', ('JRY003', ('JRY004', ('JRY005', ('JRY006', ('JRY007', ('JRY008', ('JRY009', ('JRY010', ('JRY011', ('JRY012', ('JRY013', ('JRY014', ('JRY015',
1, 2, 3, 4) 1, 2, 4, 3) 1, 3, 2, 4) 1, 3, 4, 2) 2, 1, 3, 4) 2, 1, 4, 3) 3, 1, 2, 4) 4, 3, 1, 2) 1, NULL, 3, 2) NULL, 2, 1, 3) 1, 3, NULL, 2) 1, 3, 2, NULL) NULL, 2, 1, NULL) 1, NULL, NULL, 2) 1, NULL, NULL, NULL)
podiums incorrects
INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO
T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ T_SCHNORKELZIG_SKZ
VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES
('JRY999', ('JRY998', ('JRY997', ('JRY996', ('JRY995', ('JRY994', ('JRY993', ('JRY992', ('JRY991', ('JRY990', ('JRY989', ('JRY988',
3, 3) 3, 5) 2, 2) 3, 3) 2, 6) 2, 3, 3, 3, 3, 4) 1, 1) NULL, 6, 4, NULL,
4) 4) 6, 4) NULL) 2, NULL)
Pour cela vous devez crer une contrainte SQL, et une seule, la plus concise possible. Pour ma part j'ai russi cette contrainte avec 114 caractres en faisant appel une seule fois chacune des 4 colonnes... cliquez pour rpondre et titrez votre mail " Problme n37 - vote contraint "
- 36 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Le SQL de A Z par SQLPro (autres articles) (Blog) CREATE TABLE T_GARDIENNAGE_GDN (GDN_NOM VARCHAR(16), GDN_DATEHEURE_DEBUT TIMESTAMP, GDN_DATEHEURE_FIN TIMESTAMP) ; INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN T_GARDIENNAGE_GDN VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES ('LEON', ('LEON', ('LEON', ('MARC', ('MARC', ('MARC', ('MARC', ('PAUL', ('PAUL', ('PAUL', ('PAUL', ('JACK', ('JACK', ('JACK', ('DICK', ('DICK', ('DICK', ('DICK', ('CHAD', ('CHAD', ('CHAD', '2008-09-01 '2008-09-03 '2008-09-07 '2008-09-01 '2008-09-03 '2008-09-05 '2008-09-06 '2008-09-02 '2008-09-03 '2008-09-04 '2008-09-06 '2008-09-02 '2008-09-05 '2008-09-06 '2008-09-01 '2008-09-03 '2008-09-06 '2008-09-07 '2008-09-01 '2008-09-04 '2008-09-06 22:30:00', 18:00:00', 06:00:00', 07:30:00', 08:30:00', 09:30:00', 08:30:00', 06:00:00', 06:00:00', 06:00:00', 12:00:00', 08:30:00', 08:30:00', 21:00:00', 12:30:00', 22:30:00', 16:30:00', 18:30:00', 23:30:00', 14:30:00', 10:30:00', '2008-09-02 '2008-09-04 '2008-09-07 '2008-09-01 '2008-09-03 '2008-09-05 '2008-09-06 '2008-09-02 '2008-09-03 '2008-09-04 '2008-09-06 '2008-09-02 '2008-09-05 '2008-09-07 '2008-09-02 '2008-09-04 '2008-09-07 '2008-09-08 '2008-09-02 '2008-09-05 '2008-09-06 08:00:00') 04:30:00') 12:30:00') 14:30:00') 16:00:00') 12:00:00') 13:30:00') 17:30:00') 17:30:00') 17:30:00') 22:30:00') 16:00:00') 21:30:00') 10:30:00') 00:00:00') 10:00:00') 10:30:00') 06:30:00') 11:00:00') 08:30:00') 21:00:00') ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
A l'vidence, Monsieur Fulmington du mourron se faire ! cliquez pour rpondre et titrez votre mail " Problme n38 - proprit bien garde "
Comme vous le voyez la premire forme normale n'est pas respecte puisque plusieurs informations figurent dans une seule et mme colonne ! Cependant, notre quidam doit renvoyer comme rponse le nombre d'apparition des mots clefs dans une slection d'article. Par exemple, ici, le rsultat devrait tre :
- 37 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
Le SQL de A Z par SQLPro (autres articles) (Blog) MOT_CLEF ------------------Histoire Politique Guerre Union europenne NOMBRE ---------5 3 2 1
Sauriez-vous l'aider accomplir sa tche ? cliquez pour rpondre et titrez votre mail " Problme n39 - abstract et mots clefs "
Les lignes de rception sont celles des produits alimentant le stock. Les lignes des commandes sont celles sortant du stock... Notre magazinier aimerait obtenir la prsentation suivante :
PRD_ID ---------1 1 1 1 2 2 2 3 3 4 4 4 4 DATE_STOCK -------------2008-01-01 2008-02-01 2008-02-11 2008-03-15 2008-02-10 2008-02-15 2008-03-20 2008-01-12 2008-02-01 2008-01-01 2008-01-05 2008-01-15 2008-02-01 QTE_PRISE ------------NULL NULL 45 NULL NULL 35 NULL NULL 20 NULL 75 NULL NULL QTE_RECUE ------------10 20 NULL 5 20 NULL 25 20 NULL 10 NULL 20 30 QTE_DISPO ------------10 20 0 0 20 0 10 20 0 10 0 0 0 RESTE_A_COMPLETER ----------------0 0 15 10 0 15 0 0 0 0 65 45 15
Qui lui permet de connatre au jour le jour ou il est est avec toutes les variations de stock. Sauriez vous laborer une telle requte ?
- 38 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/
cliquez pour rpondre et titrez votre mail " Problme n40 - gestion des stocks "
- 39 Copyright - SQLPro. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://sqlpro.developpez.com/Exercices/