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 :

Aide sur le CASE et calcul


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 23
    Points
    23
    Par défaut Aide sur le CASE et calcul
    Bonjour

    voici ma table et mes données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     CREATE TABLE `litiges`.`test` (
    `id` BIGINT NOT NULL AUTO_INCREMENT ,
    `litige` BIGINT NOT NULL ,
    `probleme` INT NOT NULL DEFAULT '1',
    `cdt` INT NOT NULL DEFAULT '1',
    `qte` FLOAT NOT NULL DEFAULT '0',
    `tarif` FLOAT NOT NULL DEFAULT '0',
    PRIMARY KEY ( `id` )
    ) ENGINE = InnoDB 
     
    INSERT INTO `litiges`.`test` (
    `id` ,
    `litige` ,
    `probleme` ,
    `cdt` ,
    `qte` ,
    `tarif`
    )
    VALUES (
    NULL , '1756', '8', '12', '2', '0.56'
    ), (
    NULL , '1756', '8', '24', '2', '1.15'
    ) , ( 
    NULL , '1756', '1', '12', '5', '0.56' 
    );
    Voici ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT litige, 
      CASE probleme 
        WHEN '1' THEN SUM(round( qte * tarif , 4 )) 
        ELSE SUM(round( qte * tarif * cdt , 4 )) 
      END as valeur 
    FROM test 
    GROUP BY litige
    Je devrais donc avoir :
    12 * 2 * 0.56(probleme différent de 1) + 24 * 2 * 1.15(probleme différent de 1) + 5 * 0.56(probleme = 1) = 71.44€
    mais avec la requête j'obtiens 102.24€

    Pourquoi ???

    Merci pour votre aide

  2. #2
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 23
    Points
    23
    Par défaut ...
    Bon ben j'ai fait l'boulet

    voici la bonne requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT litige, 
      sum(
        CASE probleme 
          WHEN '1' THEN round( qte * tarif , 4 ) 
          ELSE round(qte * tarif * cdt, 4) 
        END) as valeur 
    FROM test 
    GROUP BY litige
    J'aime bien résoudre tout seul

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

Discussions similaires

  1. aide sur use case
    Par Jacobian dans le forum Cas d'utilisation
    Réponses: 6
    Dernier message: 30/04/2008, 18h11
  2. Réponses: 1
    Dernier message: 28/02/2008, 21h40
  3. Aide sur le calcul matricielle avec Excel
    Par tpcforever dans le forum Excel
    Réponses: 1
    Dernier message: 22/03/2007, 21h33
  4. calcul sur des cases à cocher
    Par karidrou dans le forum Access
    Réponses: 3
    Dernier message: 06/12/2005, 11h40
  5. [Language] aide sur les switch case
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 05/04/2005, 11h34

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