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 MySQL Discussion :

Somme et regroupement


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Points : 67
    Points
    67
    Par défaut Somme et regroupement
    |Bonjour a tous,

    Je sollicite votre soutiens car je seche totalement concernant une requete incluant un regroupement et une somme, je vous explque mon soucis, j'ai une table comme celle-ci:

    service | Heure | type |genre
    -------------------------------------------
    emb | 2 |direct | oh
    ruk | 6 |indirect | oh
    vfr | 4 |direct |oh
    emb | 7 |indirect |oh
    emb | 2 |direct |oh
    vfr | 1 |indirect |oh
    ruk | 3 | direct |oh
    ruk | 3 |indirect |oh
    vfr | 4 | direct |oh

    et je souhaiterais obtenir le resultat ci-dessous:

    service | heure_direct | heure_indirect
    emb | 4 | 7
    ruk | 3 | 9
    vfr | 8 | 1

    Et j'ai eu beau retourner le problème dans tous les sens, je n'y arrive,

    merci de votre aide.

    Budy.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Points : 53
    Points
    53
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT
    table.service,t1.somme,t2.somme
    FROM
    table
    LEFT JOIN (SELECT service,SUM(heure) as somme FROM table WHERE type='direct') AS t1 ON t1.service=table.service
    LEFT JOIN (SELECT service,SUM(heure) as somme FROM table WHERE type='indirect') AS t2 ON t2.service=table.service
    Non ?

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    Bonjour mrcmrc,

    La requete fonctionne parfaitement, merci pour le coup de main

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    En version plus rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT service,
             sum(case type when 'direct'   then heure else 0 end) as heure_direct  ,
             sum(case type when 'indirect' then heure else 0 end) as heure_indirect
        FROM MaTable
    GROUP BY service

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    Bonjour Waldar,

    Effectivement ta methode à l'air plus simple mais je n'ai pas réussi à la mettre en aplication, cela me met un message d'erreur qui est le suivant :

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM tableur GROUP BY service LIMIT 0, 30' at line 4

    De plus je ne vois pas dans la requete à quel moment tu demandes la somme de la colonne heure.

    merci pour ton aide..

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    J'ai juste laissé une virgule en trop après l'alias heure_indirect avant le FROM (comme indiqué dans le message d'erreur).

    Les sommes sont assurées par les deux fonctions sum

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    Merci Waldar,

    Effectivement j'avais remarqué après reflexion qu'il y avait une virgule en trop et j'ai remplacé somme par heure qui est le nom de ma colonne.

    Encore merci cette requete est super simple et très efficace.

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    J'ai édité la requête pour inclure la correction de la virgule et du vrai nom de la colonne.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/09/2008, 15h06
  2. Somme dans une requete avec regroupement
    Par louroulou dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 19/07/2006, 21h20
  3. Réponses: 6
    Dernier message: 09/02/2006, 19h00
  4. reqite sql avec regroupement , cmpte et somme
    Par abdallahi dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/12/2005, 12h08
  5. regroupement et somme : garder le nom du champ
    Par cege dans le forum Access
    Réponses: 2
    Dernier message: 11/10/2005, 11h26

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