|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Patrick PortefaixResponsable de service informatique Inscription : novembre 2011 Messages : 6 ![]() |
Bonjour,
Je rencontre un problème pour écrire les requêtes SQL d'un cas d'étude. L'énoncé est le suivant: On a 2 tables Coursactions(nomaction,jour, valeurouverture, valeurfermeture) et Météo(jour, pluie). La table Coursactions recense pour chaque jour et pour chaque action la valeur d'ouverture et la valeur de fermeture. La table Météo donne pour chaque jour l'intensité de pluie ('sans', 'faible', 'moyenne', 'forte'). La première requête qui me pose problème est la liste des actions qui montent chaque jour de forte pluie. J'arrive à avoir la liste des actions qui montent une jour de forte pluie, mais je n'arrive pas à isoler celles qui ne montent QUE les jours de forte pluie. Code :
La deuxième question qui me bloque est l'action qui a monté le plus (en proportion) hier. La encore j'arrive à avoir la liste des actions qui ont monté hier avec la proportion mais je n'arrive pas à extraire celle qui a la proportion la plus forte Code :
NOMACTION JOUR VALEUROUVERTURE VALEURFERMETURE PEUGEOT 11/09/2001 100 50 PEUGEOT 10/11/2003 100 140 PEUGEOT 11/11/2003 100 150 PEUGEOT 12/11/2003 130 150 RENAULT 11/09/2001 100 120 RENAULT 09/11/2003 120 130 RENAULT 10/11/2003 120 130 RENAULT 11/11/2003 120 140 RENAULT 12/11/2003 130 150 RENAULT 13/11/2003 150 90 RENAULT 14/11/2003 90 130 RENAULT 15/11/2003 130 130 RENAULT 16/11/2003 130 125 RENAULT 17/11/2003 125 130 TEST 10/11/2003 80 110 TEST 11/11/2003 90 100 JOUR PLUIE 10/11/2003 FORTE 11/11/2003 SANS 12/11/2003 FAIBLE 13/11/2003 SANS 16/11/2003 FORTE Cordialement |
||||
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Tony Développeur .NET Inscription : novembre 2010 Messages : 570 ![]() |
Bonjour,
pour la première il suffit d'ajouter un not exists dans lequel tu cherche si l'action monte les jours de pluie <> FORTE pour le seconde requête, tu peux le faire en utilisant un max aussi avec sous requête, mais tu peux aussi le faire avec un not exists dans lequel tu cherches les actions ayant en proportion une meilleurs progression.
__________________
Le Porc est un loup pour le Porc. |
|
|
00
|
|
|
#3 | |||
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Salut !
Citation:
L'une se dit : {Action, quelque soit jour, (pluie = forte) => (action.coursdeb < action.coursfin)} La seconde se dit : {Action, quelque soit jour, (action.coursdeb < action.coursfin) => (pluie = forte) } Bref, on va supposer que c'est le premier énoncé qui est le bon. Effectivement, tu peux utiliser MINUS pour faire la différence ensembliste entre les actions (toutes), et celles qui baissent certains jour de pluie forte. Ca serait alors : Code :
Pour la deuxième question, il faut que tu regardes comment agréger avec les fonctions min, max: ça permet de chercher le max, le min d'une grandeur (donc ta variation relative). Tu pourras utiliser se résultat pour faire la jointure avec la requête que tu nous as proposée pour ne garder que les actions correspondant à ce max de variation.
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|||
|
00
|
|
|
#4 |
![]() ![]() |
J'ai déjà vu cette histoire de bourse et de pluie il y a pas mal de mois, peut-être un an ou deux.
Fas une recherche dans tout le forum base de données.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Patrick PortefaixResponsable de service informatique Inscription : novembre 2011 Messages : 6 ![]() |
Merci Cinefil. J'avais pourtant cherché. Je ne sais pas comment j'ai pu le rater... Mais de toute façon il n'y avais pas la réponse à mes 2 questions.
Le cas Bourse comporte 15 questions. Les miennes étaient la 9 et la 14, celle de Jedébute et... était la question 5. Pour référence... Merci à pacmann et à asmduty pour leur aide. J'ai compris l'utilisation du NOT IN dans ma première question. Pour la deuxième question, une requête qui marche est: Code :
J'ai rendu mon devoir ce soir. Encore merci de votre aide! |
||
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 655 ![]() |
Bonjour,
Concernant votre 2eme requête une autre approche est possible, en utilisant les fonctions de fenêtrage http://sqlpro.developpez.com/article...clause-window/ Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com