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 :

La moyenne d'un élève


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut La moyenne d'un élève
    j'ai 5 tables ; chacune d'elle est reliée avec l'autre:

    inscription(numinsc,nomprenom,IDniveau)

    niveau(IDniveau,libelle)

    matiere(IDmat,libellemat,Idunite,coef)

    evaluation(numinsc,Idmat,note,observation)

    unite(IDunite,libelleunite,

    je veux une requête qui permet d'afficher la moyenne d'un élève donné (Numinsc) dans une unité donnée (libelleunite).
    Bon moi j'ai essayé de créer la requête qui permet d'afficher les notes de chaque élève dans tous les matières avec une autre colonne qui calcule coef*note, mais je sais pas comment calculer la moyenne de chaque élève dans une unité qui contient bien sur un tel nombre de matières,c'est un peu difficile,:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select inscription.NumInsc,nom_prenom,sexe,inscription.annee_scolaire,niveau.libniveau,matiere.libmatiere,note,(note*coef)as'note*coef' from inscription
    inner join niveau on inscription.IDniveau=niveau.IDniveau
    inner join evaluation on inscription.NumInsc=evaluation.NumInsc
    inner join matiere on evaluation.IDmat=matiere.IDmat
    order by inscription.NumInsc
    aidez moi svp,
    cordialement
    hajer.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    AVG renvoie la moyenne d'une valeur, donc tu peux faire ainsi:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT inscription.NumInsc,nom_prenom,inscription.annee_scolaire,matiere.libmatiere,avg(note) AS Moyenne FROM inscription
    INNER JOIN niveau ON inscription.IDniveau=niveau.IDniveau
    INNER JOIN evaluation ON inscription.NumInsc=evaluation.NumInsc
    INNER JOIN matiere ON evaluation.IDmat=matiere.IDmat
    group by inscription.NumInsc,nom_prenom,inscription.annee_scolaire,matiere.libmatiere
    ORDER BY inscription.NumInsc

    Tatayo.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    merci,
    mais la moyenne dans ce cas ne se calcule pas comme ça!!(avg(note))
    car chaque matière a un coefficient donc ne pas oublier de multiplier chaque note avec son coefficient et de diviser ensuite la somme sur la somme des coefficients ça veut dire que la moyenne d'un élève dans l’unité français par exemple est égale à : (n1*coef1+n2*coef2+n*coef n)/coef1+coef2+coef n sachant que n1 et coef1 est la note et le coef concernant la matière 1 et n2....
    car chaque unité peut englober plusieurs matières.
    la moyenne dans ce cas est un peu plus difficile que avg(note),
    je pense que tu comprends...!!

  4. #4
    Membre habitué Avatar de tfc3146
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2009
    Messages : 79
    Points : 150
    Points
    150
    Par défaut
    Bonjour,
    Et si vous essayez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUM(note*coef)/SUM(coef)
    C'est en faisant n'importe quoi qu'on devient n'importe qui
    Si un message vous a aidé, n'hésitez pas à mettre +1

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut Grammaire, orthographe
    oui j'ai déjà essayé cette formule mais ça ne marche pas, voilà le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select inscription.NumInsc,nom_prenom,sexe,inscription.annee_scolaire,niveau.libniveau,unite.libunite,matiere.libmatiere,note,(note * coef)as'note*coef',(sum(note * coef)/sum(coef )) as 'moy'from inscription
    inner join niveau on inscription.IDniveau=niveau.IDniveau
    inner join evaluation on inscription.NumInsc=evaluation.NumInsc
    inner join matiere on evaluation.IDmat=matiere.IDmat
    inner join unite on matiere.IDunite=unite.IDunite
    where unite.libunite like 'français'  and   inscription.NumInsc like '100'                             
    group by inscription.NumInsc,nom_prenom,sexe,inscription.annee_scolaire,niveau.libniveau,matiere.libmatiere,note,coef,unite.libunite
    je ne sais pas où est le problème, mais la moyenne est incorrecte

  6. #6
    Membre habitué Avatar de tfc3146
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2009
    Messages : 79
    Points : 150
    Points
    150
    Par défaut
    je sais pas ou est le probleme,mais la moyenne est incorrecte
    Pour moi ça fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT *
    FROM MATIERE
     
     
    MAT	NOTE	COEF
    Francais	10	4
    Anglais	11	3
    Espagnol	2	8
    Philo	3	4
    Et ce qui donne la bonne moyenne : je sais ma moyenne ne vole pas haut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT SUM(note*coef)/SUM(coef)
    FROM MATIERE
     
    SUM(NOTE*COEF)/SUM(COEF)
    5,31578947368421052631578947368421052632
    C'est en faisant n'importe quoi qu'on devient n'importe qui
    Si un message vous a aidé, n'hésitez pas à mettre +1

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Le problème n'est pas dans la formule mais dans la requête.
    note et coef ne devraient par être dans le GROUP BY.
    En effet on calcule la moyenne des notes par étudiant, par année, par matière etc.. ça OK, mais la moyenne des notes par note, ça n'a pas de sens.
    Même problème dans les colonnes du SELECT on ne peut pas sortir à la fois la note dans une colonne et la moyenne des notes dans la colonne d'à côté, puisqu'une moyenne correspond à plusieurs notes.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Le problème n'est pas dans la formule mais dans la requête.
    note et coef ne devraient par être dans le GROUP BY.

    si j'efface la note et le coef dans le group by,une erreur s'est produite:La colonne 'evaluation.Note' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY. et la meme chose pour le coef.

    En effet on calcule la moyenne des notes par étudiant, par année, par matière etc.. ça OK, mais la moyenne des notes par note, ça n'a pas de sens.
    Même problème dans les colonnes du SELECT on ne peut pas sortir à la fois la note dans une colonne et la moyenne des notes dans la colonne d'à côté, puisqu'une moyenne correspond à plusieurs notes.

    de ce qui concerne ce probleme tu as raison,mais juste je teste le resultat sur sql server,pour l'appliquer sur visual basic donc ce probleme n'aura pas de sens

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    merci pour tous ce qui poster une réponse dans ce sujet,
    Enfin j'ai résolu le probleme,voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select inscription.NumInsc,unite.libunite,(sum(note * coef)/sum(coef )) as 'moy' from evaluation
    inner join matiere on evaluation.IDmat=matiere.IDmat
    inner join unite on matiere.IDunite=unite.IDunite
    inner join inscription on evaluation.NumInsc=inscription.NumInsc
    group by inscription.NumInsc,unite.libunite

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

Discussions similaires

  1. Requete moyennes mensuelles
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/09/2004, 10h43
  2. probleme de moyenne
    Par prez dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/08/2004, 17h38
  3. [SGBD] Pour moyenne base avec SQL ?
    Par PyRoFlo dans le forum Bases de données
    Réponses: 10
    Dernier message: 13/03/2004, 18h54
  4. Réponses: 3
    Dernier message: 18/05/2003, 00h16

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