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

Langage SQL Discussion :

Utilisation de la fonction max


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 70
    Par défaut Utilisation de la fonction max
    Bonjour.
    J'ai vraiment du mal avec le concept de regroupement ... Ce que j'eassaye de faire ne me semble pas compliqué et pourtant cela ne fonctionne pas.
    J'ai une table Eleve(nom, note, trimestre, periode). Donc lorsque j'execute un "SELECT * d'une_vue" j'obtiens quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    AA  | 13 | trim1 | per11
    AA  | 10 | trim1 | per12
    AA  | 15 | trim2 | per21
    AB  | 9  | trim1 | per11
    AB  | 17 | trim1 | per12
    AB  | 18 | trim2 | per21
    BB  | 2  | trim1 | per11
    BB  | 8  | trim1 | per12
    BB  | 9  | trim2 | per21
    Voyez ... rien de transcandant
    Devinez ce que je voudrais faire ? Avoir le max des notes de chaque nom, pour chaque trimestre avec la periode associé ! Bravo \o/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    AA  | 13 | trim1 | per11
    AA  | 15 | trim2 | per21
    AB  | 17 | trim1 | per12
    AB  | 18 | trim2 | per21
    BB  | 8  | trim1 | per12
    BB  | 9  | trim2 | per21
    mais j'obtiens plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    AA  | 13 | trim1 | per11
    AA  | 15 | trim2 | per21
    AB  | 17 | trim1 | per11
    AB  | 18 | trim2 | per21
    BB  | 8  | trim1 | per11
    BB  | 9  | trim2 | per21
    Vous voyez il ne garde pas la bonne periode, garde la "1ere" a chaque fois.
    voici ce que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom, max(note) as Mnote, trimestre, periode
    FROM Eleve
    GROUP BY nom, trimestre
    Est ce grave docteur ?

  2. #2
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom, max(note) AS Mnote, trimestre, periode
    FROM Eleve
    GROUP BY nom, trimestre, periode
    il faut mettre tous les champs dans le group by

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Citation Envoyé par Mathusalem Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom, max(note) AS Mnote, trimestre, periode
    FROM Eleve
    GROUP BY nom, trimestre, periode
    il faut mettre tous les champs dans le group by
    Anomalie qu'un SGBD strict sur la syntaxe aurait détectée....
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 70
    Par défaut
    Eum je crois bien que ca ne fonctionne pas... (et je voudrais juste preciser que je l'avais deja essayer celle là )
    ma requete c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT nom, max(note) as note, matiere, controle
    FROM view_login_note_mat_ctl v
    WHERE nom = 'nom1'
    GROUP BY nom, matiere, controle
    Ce que j'obtiens c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    nom|note|matiere|controle
    "nom1",11,"francais","controle0 de francais"
    "nom1",11,"francais","controle1 de francais"
    "nom1",14,"francais","controle2 de francais"
    "nom1",13,"francais","controle3 de francais"
    "nom1",0,"math","controle0 de math"
    "nom1",4,"math","controle1 de math"
    "nom1",12,"math","controle2 de math"
    "nom1",0,"histoire","controle0 de histoire"
    "nom1",12,"histoire","controle1 de histoire"
    "nom1",9,"musique","controle0 de musique"
    "nom1",12,"musique","controle1 de musique"
    "nom1",1,"musique","controle2 de musique"
    C'est exactement le meme nombre de ligne que sans regroupage...
    Pour etre sûr detre clair, ce que je voudrais avoir au final cest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    nom|note|matiere|controle
    "nom1",14,"francais","controle2 de francais"
    "nom1",12,"math","controle2 de math"
    "nom1",12,"histoire","controle1 de histoire"
    "nom1",12,"musique","controle1 de musique"

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Donc tu veux, pour chaque (nom, matiere), la ligne pour laquelle la note est la plus élevée...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 70
    Par défaut
    Oui c'est bien ca ! C'est pas ce qu'il s'est resenti en debut de topic ?

Discussions similaires

  1. [Toutes versions] Utilisation de la fonction max
    Par thoruiz dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/08/2019, 09h19
  2. Ouverture d'un fichier et utilisation de la fonction max
    Par gta9956 dans le forum Général Python
    Réponses: 5
    Dernier message: 03/06/2014, 21h09
  3. Utilisation de la fonction MAX()
    Par JustyDark dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/01/2014, 22h36
  4. Utilisation de la fonction MAX
    Par PatStan17 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 05/04/2012, 17h49
  5. Utilisation de la fonction MAX
    Par joyeux_lapin13 dans le forum SAS Base
    Réponses: 4
    Dernier message: 23/02/2011, 09h32

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