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 :

Problème de division par zero


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 47
    Points : 30
    Points
    30
    Par défaut Problème de division par zero
    Bonjour, j'ai une requête SQL du type A/(B-C) et le problème c'est que des fois B-C = 0 donc il lance une erreur de division par zéro. J'ai testé sans succès NULLIF.

    La requête :

    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
    SELECT MAX(com) AS Commune, max(code_com),
    (cast(
    SUM(couts_Plan_bas)
    as decimal(30,10))
    /
    (cast(
    SUM(
    (conso_chauf_EF_init - conso_Plan_EF)
    * 
    cast(
    (Select duree from dureevie where type ='Plan') 
    as float)
    ) as float)
    )
    )
    AS COUTS_Plan_BAS
     FROM Sc_Classique 
     WHERE CATL = 'Résidence Principale' 
    GROUP BY Code_Com ORDER BY code_COM
    Le problème vient de (conso_chauf_EF_init - conso_Plan_EF) qui est parfois égale à zéro. Quelqu'un aurait il une solution?

  2. #2
    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
    Testez d'abord le résultat de B-C avec un case :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE WHEN conso_chauf_EF_init = conso_Plan_EF THEN 0 ELSE <le reste de la formule> END

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Vous avez acheté un stocke de parenthèse dans un surplus ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT MAX(com) AS Commune, 
           max(code_com),
           cast(SUM(couts_Plan_bas) AS FLOAT)
                / NULLIF((cast(SUM(conso_chauf_EF_init - conso_Plan_EF) AS FLOAT)
                   * cast(duree AS float)), 0) AS COUTS_Plan_BAS
    FROM   Sc_Classique 
           CROSS JOIN dureevie
    WHERE  CATL = 'Résidence Principale' 
      AND  type ='Plan'
    GROUP  BY Code_Com 
    ORDER  BY code_COM
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    En faite j'ai fait un case when else et j'ai résolu mon problème.

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

Discussions similaires

  1. la division par zero pour effectuer un pourcentage dans une requete
    Par VIRGINIE87 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 24/05/2007, 22h44
  2. Réponses: 3
    Dernier message: 25/09/2006, 16h39
  3. problème de division par 100
    Par trent94 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/11/2005, 22h08
  4. [Math][Info]division par zéro
    Par niko8181 dans le forum Général Java
    Réponses: 9
    Dernier message: 23/05/2005, 09h58
  5. [CR8.5] Problème de division par zéro sur formule
    Par franck.cvitrans dans le forum Formules
    Réponses: 3
    Dernier message: 10/06/2004, 13h41

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