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 :

Requête avec plusieurs SUM


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Points : 66
    Points
    66
    Par défaut Requête avec plusieurs SUM
    Bonjour,
    J'ai une table dont voici un extrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    |annee|code|age|sexe|valeur|
    |-----|----|---|----|------|
    |1990 | 01 | 1 | f  | 1521 |
    |1990 | 01 | 1 | h  | 1715 |
    |1990 | 01 | 2 | f  | 2562 |
    |1990 | 01 | 2 | h  | 2704 |
       .
       .
       .
    Il y a comme ça 10 années (de 1990 à 1999), 96 codes (de 01 à 96) et 20 ages différents.

    Je voudrais construire une requête qui retourne dans une colonne le code, dans une deuxième la somme des valeurs pour les ages 1, 2 et 3 (par exemple) et dans une troisième, la somme des valeurs pour les ages 5 et 6, pour les femmes et pour l'année 1990.

    La requête suivante fonctionne pour 1 colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT code,SUM(valeur) 
    FROM table_age 
    WHERE (age = 1 OR age= 2 OR age = 3) AND sexe='f' AND annee=1990 
    GROUP BY code
    Pour la 2ème colonne, je n'y arrive pas. J'ai essayé la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT t1.code,SUM(t1.valeur),SUM(t2.valeur)
    FROM table_age t1, table_age t2
    WHERE (t1.age = 1 OR t1.age= 2 OR t1.age = 3) AND t1.sexe='f' AND t1.annee=1990 AND (t2.age = 4 OR t2.age = 5) AND t2.sexe='f' AND t2.annee=1990
    AND t1.code=t2.code AND t1.sexe=t2.sexe AND t1.annee=t2.annee
    GROUP BY t1.code
    mais sans succès, les résultats obtenus dans les colonnes de valeurs ne sont pas bons...

    Merci par avance pour votre aide.

  2. #2
    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,

    Peut-être comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT 
           code,
           SUM(CASE 
                    WHEN age IN (1,2,3) THEN valeur
                    ELSE 0
               END) AS Age123,
           SUM(CASE 
                    WHEN age IN (5,6) THEN valeur
                    ELSE 0
               END) AS Age56
    FROM table_age
    WHERE annee=1990 and sexe = 'f'

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Points : 66
    Points
    66
    Par défaut
    En ajoutant "GROUP BY" à la fin, ça marche effectivement très bien.
    Merci beaucoup !

  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
    Citation Envoyé par jgfa9 Voir le message
    En ajoutant "GROUP BY" à la fin
    Ah oui, petit oubli de ma part

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

Discussions similaires

  1. [Cours pt-02][Débutants]Requête avec plusieurs sommes
    Par Papy Turbo dans le forum Sondages et Débats
    Réponses: 18
    Dernier message: 29/10/2007, 18h55
  2. Requête avec plusieurs mots
    Par zeugzeug dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/05/2007, 14h47
  3. Requête avec fonction Sum
    Par freud dans le forum Bases de données
    Réponses: 3
    Dernier message: 12/02/2007, 13h32
  4. une requête avec plusieurs INNER JOIN, cmt faire ?
    Par elhosni dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/01/2006, 17h55
  5. Fusionner 3 requêtes avec un SUM en une seule
    Par David Guillouet dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/07/2004, 15h54

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