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 :

calcul somme sur une colonne


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 108
    Points : 46
    Points
    46
    Par défaut calcul somme sur une colonne
    Bonjoor
    aidez moi SVP !
    voici mon problème : j'ai deux tables: (table 1 : moyen_elev_trim ; table 2 :eleve) qui ne sont pas reliées mais qui ont un champ commun (matricule_elev).

    je voudrais avoir la somme des moyennes d'un eleve à partir de la table moyen_elev_trim ___ ma reqquete envoie lemessage suivant :
    "le préfixe de colonne 'moyen_elev_trim' ne correspond ni au nom de table ni au nom de l'alias utilisé dans la requete ."
    voici ma pauvre requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT (SUM(MOYEN_ELEV_TRIM.MOYENNE_TRIM)) as total
     
       FROM MOYEN_ELEV_TRIM  M
            INNER JOIN ELEVE E
               ON (M.matricule_elev=E.matricule_elev)
             WHERE  M.MATRICULE_ELEV_elev=E.matricule_elev
                  and      M. code_trim=:trim
                  and      M. code_annee=:annee
                  and      M. num_classe=:clas
    Merci pour l'éclairage

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Une fois qu'une table est aliasée vous êtes obligé d'utiliser l'alias de la table.
    Chose que vous ne faites pas dans la partie SELECT de votre requête.

    Le premier filtre est identique à votre jointure et donc parfaitement inutile.

  3. #3
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 108
    Points : 46
    Points
    46
    Par défaut Somme sur une colonne
    Bonjour !

    OK ! Voilà ce que j'ai refait mais fonctionne pas toujous;;;;;

    Merci d'avance


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select m.matricule_elev,  coalesce(sum(M.MOYEN_ELEV_TRIM.MOYENNE_TRIM,0))   as total
     FROM MOYEN_ELEV_TRIM  M    
    inner join      ELEVE E
    where  M.MATRICULE_ELEV_elev=E.matricule_elev
    and      M. code_trim=:trim
    and      M. code_annee=:annee
    and      M. num_classe=:clas
              group by m.matricule_elev

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Bonjour,

    Votre coalesce est mal écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(coalesce(M.MOYENNE_TRIM,0))

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    J'ajoute que la jointure est mal écrite également.

    Syntaxe générale d'une jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FROM une_table
    JOIN une_autre_table ON condition_de_jointure
    Votre requête devrait donc être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT m.matricule_elev,  
      coalesce(sum(M.MOYEN_ELEV_TRIM.MOYENNE_TRIM,0)) AS total
    FROM MOYEN_ELEV_TRIM  M    
    INNER JOIN ELEVE E ON M.MATRICULE_ELEV_elev = E.matricule_elev
    WHERE M.code_trim = :trim
      AND M.code_annee = :annee
      AND M. num_classe = :clas
    GROUP BY M.matricule_elev
    Prenez l'habitude de laisser des espaces autour des opérateurs car le SGBD pourrait se poser des qestions face à M.code_trim=:trim et l'interpréter comme une seule expression non réductible.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Je me pose une question fonctionnelle. A quoi sert une somme de moyenne?
    Une moyenne de moyenne je comprend, mais une somme à part pour calculer la moyenne?

    A+
    Soazig

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Votre requête devrait donc être
    Vous avez oublié la correction précédente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      select m.matricule_elev,  
             coalesce(sum(m.moyenne_trim,0)) as total
        from moyen_elev_trim  m    
             inner join eleve e
               on e.matricule_elev = m.matricule_elev_elev
       where m.code_trim  = :trim
         and m.code_annee = :annee
         and m.num_classe = :clas
    group by m.matricule_elev;

  8. #8
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 108
    Points : 46
    Points
    46
    Par défaut Somme sur une colonne
    OK MERCI

    Vive le forum.

    En fait je dois caluler la moyenne annuelle par élève après la fin du 3eme trimestre.
    Les moyennes trimestrielles sont dans la table :MOYEN_ELEV_TRIM.

    ensuite je dois faire une requête qui mettra le rang de chaque élève sur le bulletin de l'évève mais en tenant compte des execo.

    quelqu'un pourrai me guider pour la requête ? j'avoue que je ne vois pas du tout comment faire

    merci pour l'aide

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Quel est votre SGBD (et sa version) ?

  10. #10
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 108
    Points : 46
    Points
    46
    Par défaut Somme sur une colonne
    Bonjour


    J'utilise comme SGBD : SQL server 2000 version 8.00.199/


    Merci d'avance

Discussions similaires

  1. [Débutant] calcul somme d'une colonne de datagridview
    Par sabi11 dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/05/2012, 20h54
  2. [Toutes versions] somme sur une colonne tous les 17 cellules
    Par jolemoine dans le forum Excel
    Réponses: 6
    Dernier message: 07/05/2012, 15h30
  3. [SP-2010] Faire une somme sur une colonne d'une liste
    Par sebfreu dans le forum SharePoint
    Réponses: 6
    Dernier message: 19/01/2012, 11h05
  4. [MySQL] Somme sur une colonne, données venant d'une base MYSQL
    Par TraxX67 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/11/2010, 15h01
  5. [AC-2000] calcul somme d'une colonne
    Par guaguanco dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 03/09/2010, 18h37

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