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 :

Filtrer sur le MAX d'une table - SQL


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 128
    Par défaut Filtrer sur le MAX d'une table - SQL
    Bonjour;
    je voudrais exécuter une requête pour retourner le MAX d'une moyenne générale selon une année.

    voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM matable
    WHERE annee= 2013
    GROUP BY semestre HAVING MAX(mg)

    voici ma table :

    id annee mg semestre session
    1 2013 7 semestre 1 session 1
    2 2013 8 semestre 1 session 2
    3 2013 9 semestre 2 session 1
    4 2013 11 semestre 2 session 2
    5 2014 9 semestre 3 session 1
    6 2014 13 semestre 3 session 2

    j'attendais un résultat comme suivant :

    id annee mg semestre session
    2 2013 8 semestre 1 session 2
    4 2013 11 semestre 2 session 2

    malheureusement ma requête ne retourne pas le résultat voulu
    Merci d'avance

  2. #2
    Membre émérite
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Par défaut
    Bonjour,

    on ne peut pas faire un "Group By" après un "Select *"
    il faut sélectionner les champs un par un

  3. #3
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    9 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9 029
    Par défaut
    Citation Envoyé par accessisgood Voir le message
    Bonjour,

    on ne peut pas faire un "Group By" après un "Select *"
    il faut sélectionner les champs un par un
    bonjour,
    et encore, pas tous les champs, uniquement ceux utilisés dans le regroupement:
    exemple ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Max(mg) AS Maxmg, semestre
    FROM matable
    WHERE annee=2013
    GROUP BY semestre;
    ou ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT annee, Max(mg) AS Maxmg, semestre
    FROM matable
    GROUP BY annee, semestre
    HAVING annee=2013;

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 421
    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 421
    Billets dans le blog
    48
    Par défaut


    Il faut procéder en deux temps avec une sous-requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT M.id,
           M.annee,
           M.mg,
           M.semestre,
           M.session
    FROM matable AS M
    INNER JOIN
      (SELECT matable.semestre,
              matable.annee,
              Max(matable.mg) AS MaxDemg
       FROM matable
       WHERE matable.annee=2013
       GROUP BY matable.semestre,
                matable.annee) AS T 
    ON M.semestre=T.semestre AND M.annee=T.annee
    WHERE M.mg=T.MaxDemg ;

Discussions similaires

  1. [DeskI V5-V6] Filtrer sur le Max d'une colonne
    Par antakini dans le forum Débuter
    Réponses: 2
    Dernier message: 13/02/2014, 14h10
  2. Historisation des modifications effectuées sur une table SQL
    Par Drooxy dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/10/2007, 13h29
  3. Select via un dblink sur une table sql server
    Par Cathy dans le forum SQL
    Réponses: 11
    Dernier message: 06/08/2007, 19h10
  4. lier une table Sql Server sur Access
    Par JerBi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/01/2006, 16h27
  5. Pooling sur une table SQL
    Par Jean-Jacques Engels dans le forum Bases de données
    Réponses: 5
    Dernier message: 04/11/2004, 23h10

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