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 :

Faire la somme d'une colonne obtenue avec la fonction SUM()


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Faire la somme d'une colonne obtenue avec la fonction SUM()
    Bonjour,

    Je me permets de solliciter votre aide aujourd'hui car je 'bloque' sur une requête SQL et je ne m'en sors pas malgré mes nombreuses recherches...

    Alors voilà... je dois faire ressortir le bénéfice mensuel des ventes.

    J'ai la requête me permettant d'avoir le bénéfice mensuel pour chaque article:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT EXTRACT(YEAR_MONTH FROM datefacture) as periode, 
      ((PUHT - prix_achat) * SUM(qte)) as 'beneficeart'
    FROM article A, ligne L, Facture F
    where A.idarticle = L.article_idarticle 
      and F.idfacture=L.facture_idfacture
    group by periode, A.idarticle
    Résultat renvoyé:
    periode beneficeart
    201105 90.00
    201105 33.00
    201105 300.00
    201105 35.00
    201105 100.00
    201105 14.00
    201105 5.50
    201105 15.00
    201105 12.00
    201105 1.50

    Mais je voudrais avoir la somme de la colonne calculée 'beneficeart' qui doit me retourner 606. et je n'y parviens pas.

    Lorsque je tente de faire la somme de cette colonne MySQL m'affiche des erreurs.

    Je vous remercie d'avance pour votre aide.

    Cordialement.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Il suffit d'imbriquer ta requête dans une autre mais en écrivant les jointures avec la syntaxe normalisée depuis 1992 et en utilisant les alias partout afin de savoir d'où viennent les colonnes, c'est encore mieux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT periode, SUM(beneficeart) AS Total
    FROM
    (
    	SELECT EXTRACT(YEAR_MONT FROM f.datefacture) AS periode,
    		(a.PUHT - a.prix_achat) * SUM(qte) AS beneficeart
    	FROM article a
    	INNER JOIN ligne l ON l.article_idarticle = a.idarticle
    		INNER JOIN Facture f ON f.idfacture = l.facture_idfacture
    	GROUP BY periode, a.idarticle
    ) tmp
    GROUP BY periode
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    bonjour

    cela aurait bien d'indiquer la structure des tables !

    j'imagine mal que les prix n’évoluent pas au cours d'une même période

    il vous faut donc faire une requête qui calcule pour un article pendant une période, avec un même prix (vente et achat), la quantité vendue

    et après calculer le bénéfice

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT Periode,
               Article,
              SUM((PUHT - prix_achat) * Nb) AS 'beneficeart'       
    FROM
        (SELECT Periode,
                    Article,
                    PUHT,
                    Prix_Achat,
                    SUM(Q) Nb
             FROM ..... -- en utilisant la norme SQL :calim2:
             GROUP BY Periode,
                    Article,
                    PUHT,
                    Prix_Achat) AS Compta
    Merci d'ajouter un sur les tags qui vous ont aidé

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Merci à tous les 2 pour vos réponses et les aides apportées.

    Comme il s'agit d'une gestion des prix simplifiée la correction apportée par CinePhil me convient très bien.
    Ceci dit, il est vrai que dans la réalité les prix peuvent fluctuer au cours d'n même exercice comptable. Je prends note des 2 solutions, s'il me reste du temps je travaillerais la deuxieme.

    Pour information, voici la structure (simplifiée) des tables concernées:

    article(idarticle, nomarticle, PUHT, prix_achat,...)
    facture(idfacture, #users_iduser, datefacure,...)
    ligne (#facture_idfacture, #article_idarticle, qte)

    Bien cordialement.

    PS: Je passe le sujet en résolu mais si vous avez d'autres conseils/remarques je suis toujours preneur.

    Merci encore pour votre réactivité et les réponses!

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

Discussions similaires

  1. faire la somme d'une colonne d'un MSFlexGrid1
    Par magiabd dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 25/05/2011, 17h35
  2. Faire la somme d'une colonne dans la même requête
    Par logiciel_const dans le forum SQL
    Réponses: 23
    Dernier message: 26/10/2010, 09h47
  3. Faire la somme d'une colonne
    Par vg-matrix dans le forum Rave
    Réponses: 1
    Dernier message: 02/11/2009, 15h28
  4. faire la somme d'une colonne ou il y a des chifres et du texte
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/07/2008, 14h28
  5. faire la somme d'une colonne d'une listbox
    Par Namson dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 25/04/2007, 23h34

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