IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Expression Max + Mois [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut Expression Max + Mois
    Bonjour,
    J'ai une table dans laquelle je rentre des données mensuelles par commune.
    Voici le descriptif de la Table "Volume Commune"
    CommuneId
    MoisId
    AnneeId
    Volume

    Je souhaite réaliser une requête qui permet de trouver le mois pour lequel on a le plus grand volume pour une année.
    Pour le moment avec l'expression Max, j'obtiens le volume en question et impossible d'y affecter le mois correspondant à ce volume.
    Merci de votre aide

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonsoir,
    cela pourrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT NomTable.MoisId 
    FROM NomTable 
    WHERE (((NomTable.volume) In 
                                (SELECT max(NomTable.volume) 
                                 FROM NomTable;))) 
    GROUP BY NomTable.MoisId;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Bonjour avec cette requête j'obtiens effectivement le mois pour lequel on a un volume max.
    Mais la requête se fait sur l'ensemble des communes et l'ensemble des années.
    Sauf que je souhaite le mois où l'on rencontre un volume max pour chaque année et sur chaque commune.
    cad si j'ai 10 communes et deux années la requête me trouve 20 mois.
    Merci de ton aide

  4. #4
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonsoir,
    il suffit d'ajouter la commune et l'année dans la requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT NomTable.CommuneId, NomTable.AnneeId, NomTable.MoisId FROM NomTable
    WHERE (((NomTable.volume) In (SELECT max([NomTable].[volume]) FROM NomTable;)));

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 306
    Billets dans le blog
    48
    Par défaut
    bonsoir,

    Citation Envoyé par Nana35 Voir le message
    ...cad si j'ai 10 communes et deux années la requête me trouve 20 mois.
    donc pour le moment tu obtiens le volume maxi avec la requête:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CommuneId, AnneeId, Max(Volume) as VolumeMaxi
    FROM [Volume Commune]
    GROUP BY CommuneId, AnneeId

    c'est ça ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Bonjour,
    C'est ça. Pour le moment, j'otiens le volume max avec le mois (donc 1 seul résultat) et pas l'ensemble des mois de "pointe" de chaque année de chaque commune.
    Je continue de chercher mais c'est surement tout con.

  7. #7
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 306
    Billets dans le blog
    48
    Par défaut
    Heu bon, c’est pas très clair… Je reprends…

    R_VolMax :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT communeid,
           anneeid,
           MAX(volume) AS volumemaxi
    FROM   [Volume Commune]
    GROUP  BY communeid,
              anneeid

    Cette requête fait un regroupement par commune et par année

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CommuneId     AnneeId         VolumeMaxi
        1		2009            2500
        1           2010            3012
        2           2009            1450
        2           2010            1520
    …
    Citation Envoyé par nana35
    Sauf que je souhaite le mois où l'on rencontre un volume max pour chaque année et sur chaque commune.
    cad si j'ai 10 communes et deux années la requête me trouve 20 mois.
    La requête R_VolMax ne permet pas en effet de dire quel est le mois de l’année où est obtenu ce volume maximal. R_VolMax doit donc être utilisée comme sous-requête pour récupérer le mois :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT t.communeid,
           t.anneeid,
           t.moisid,
           t.volume
    FROM   [Volume Commune] t
           INNER JOIN [r_volmax] u
             ON t.communeid = u.communeid
                AND t.anneeid = u.anneeid
    WHERE  t.volume = u.volumemaxi

    En espérant avoir bien compris la demande…

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Ok pour la sous requête.
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. max par catégorie de mois
    Par hafka007 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/02/2007, 17h32
  2. PCI-Express x16 ( max 2Gb/s , x4 mode ) :
    Par Dev-FX dans le forum Composants
    Réponses: 2
    Dernier message: 19/10/2006, 18h54
  3. [.m3g et 3Dstudio Max] ça plante ou c'est moi?
    Par themoye dans le forum Développement Mobile en Java
    Réponses: 1
    Dernier message: 21/09/2006, 16h38
  4. date jour max du mois
    Par lazzeroni dans le forum Oracle
    Réponses: 2
    Dernier message: 16/08/2006, 12h17
  5. Réponses: 2
    Dernier message: 21/02/2005, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo