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 :

comment faire une somme d'une colonne d'un groupe inferieure à un nombre


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut comment faire une somme d'une colonne d'un groupe inferieure à un nombre
    Salut tout le monde!
    j'ai une table Facture(IDfacture, CodeFournisseur, MontantTotal, DateFacture)

    je voudrai sélectionner les factures dont la somme des montants totaux ne depasse pas un certains budget que je me fixe pr regler mes factures fournisseurs; en d'autres termes je veux les premières factures dont la somme des montants totaux ne depasse pas une certaine somme entrée en paramètre sur un ecran

    Quelqu'un peut il m'aider?

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    La requête suivant eramène toutes les factures dont le montant total ne dépasse pas 100 (l'unité en vigeur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT IDfacture, CodeFournisseur, MontantTotal, DateFacture
      FROM Facture
     WHERE MontantTotal < 100
    C'est vraiment la base, n'hésitez pas à vous former un peu avec les ressources que nous proposons :
    http://sql.developpez.com

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Xo
    La requête suivant eramène toutes les factures dont le montant total ne dépasse pas 100 (l'unité en vigeur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT IDfacture, CodeFournisseur, MontantTotal, DateFacture
      FROM Facture
     WHERE MontantTotal < 100
    C'est vraiment la base, n'hésitez pas à vous former un peu avec les ressources que nous proposons :
    http://sql.developpez.com

    Merci XO pour la promptitude de ta reaction, mais là tu ne m'a pas très bien compris.
    Je me réexplique...
    Suppose que t'as à la fin du mois plusieurs factures à payer. tu ne dispose que d'un montant donné (disons 1000Eur) pour les régler; tu decide alors de choisir les N-premières factures par ordre de priorité (la date limite par exple) dont la somme ne depasse pas tes 1000 euros; en clair tu choisis de payer plusieurs factures avec tes 1000 euros mais juste celles dont la date limite approche; il s'agit donc de faire un classement de tes factures par ordre de priorité puis de choisir les N-premières dont le total cumulé des montant totaux ne depasse pas ton budget de 1000 euros.

    exemple:

    table : Facture (CodeFournisseur, Codefacture, MontantTotal, DateLImite,...)
    Facture1 (SFR,SFR001, 150Eur, 11/09/2006)
    Facture2 (EDF,ed001, 550Eur, 25/09/2006)
    Facture3 (FT,Ft001, 950Eur, 31/09/2006)
    Facture3 (DJA-IMMOBILIER,DJA0014, 350Eur, 31/09/2006)
    Facture4 (CITROEN,R001, 200Eur, 22/09/2006)
    Facture5 (MMA,MMAR001, 75Eur, 30/09/2006)
    Facture6 (CANAL+,SFR001, 29Eur, 31/09/2006)

    pour ce cas d'espèce la requete devrait me renvoyer les factures 1,2,4 et 5 puisque leur total cumulé est de 975eur et c'est elles les plus urgentes à payer...
    Merci de vos reponses!

  4. #4
    Membre habitué Avatar de petit arbre
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 153
    Points
    153
    Par défaut
    select codefacture
    from facture
    where
    codefacture in
    (
    select codefacture
    from facture
    order by datelimite desc // pour prendre les plus "pressantes"
    )
    group by montanttotal
    having sum(montantottal) < &limite


    ça donne quoi?

    P.S ; j'ai la flemme de monter ma base Oracle

  5. #5
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Tu peux jeter un oeil à ce message : réaliser un cumul progressif sur des lignes, avec un order by sur la date, ça devrait te donner un début de solution

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par petit arbre
    select codefacture
    from facture
    where
    codefacture in
    (
    select codefacture
    from facture
    order by datelimite desc // pour prendre les plus "pressantes"
    )
    group by montanttotal
    having sum(montantottal) < &limite


    ça donne quoi?

    P.S ; j'ai la flemme de monter ma base Oracle

    La clause Order by est interdite dans une sous requete....

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Xo
    Tu peux jeter un oeil à ce message : réaliser un cumul progressif sur des lignes, avec un order by sur la date, ça devrait te donner un début de solution
    Avant de créer ce topic j'ai bien lu cet article là...j'ai pas pu l'adapter à ma situation car la structure de la table facture de cet article là est differente de la mienne; dans l'article, il s'agit des lignes d'articles d'une facture; chez moi c'est les facture et on peut avoir un meme code de facture pour deux fournisseurs differents, et ça qui complique tout....

  8. #8
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par dja_roul
    chez moi c'est les facture et on peut avoir un meme code de facture pour deux fournisseurs differents, et ça qui complique tout....
    Ca c'est ennuyeux, si tu ne peut distinguer les factures entre elles !

    Ta table a-t'elle une clé primaire ? Par quoi identifies-tu tes factures ? Par le couple de valeurs (référence/date) ?

  9. #9
    Membre habitué Avatar de petit arbre
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 153
    Points
    153
    Par défaut
    à priori il y a un IDfacture qui doit servir de clé primaire.
    Ce qui est étonnant c'est qu'il n' ait pas de relation 1 facture = 1 fournisseur.

    Dans ce cas il doit être dans le cas de figure 0,n <--> 0,n, non?

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    les factures sont identidiées par le couple (CodeFacture, CodeFournisseur)
    on peut avoir le meme code facture pr deux fournisseurs differents mais l'inverse n'est pas possible (on ne peut avoir deux codefactures pour le meme fournisseur..)

  11. #11
    Membre habitué Avatar de petit arbre
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 153
    Points
    153
    Par défaut
    hummm, au fait, tu n'as pas du charger ton jeu de test

    le 31/09/2006 n'existe pas et est donc rejeté en tant que date.

Discussions similaires

  1. Réponses: 15
    Dernier message: 26/01/2015, 19h37
  2. [CR X]Effectuer une somme d'une somme
    Par Chuppas dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/08/2008, 10h52
  3. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  4. Comment faire la somme d'une expression?
    Par aquafafa dans le forum IHM
    Réponses: 0
    Dernier message: 25/02/2008, 13h31
  5. Réponses: 2
    Dernier message: 13/02/2007, 17h40

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