p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : juillet 2012
    Messages : 11
    Points : 4
    Points
    4

    Par défaut select sum = résultat étrange

    Bonjour!

    J'ai une application vb.net qui exploite une petite base de donnée SQLITEv3.

    L'une de mes tables contient une liste de prix. Une requête select me donne ceci:

    PRIX
    -18.4
    -131.66
    98.77
    -25
    -50
    -754
    0.62
    -48.11
    43.44
    -54.5
    538.07
    -23.05
    -67.28
    -78.4
    -4.36
    -21.37
    509.48
    -98.77
    -40
    -24.95
    -9.18
    -103.49
    -19.1
    -14.95
    -23.4
    -47.5
    -68
    -0.02
    -40
    478.84
    -25.64
    -0.05
    -50
    503.76
    -50
    -50
    -231.8

    Si j'en fais la somme à la main, j'arrive a zéro... Mais en faisant un select sum(prix) SQLITE me retourne 5.6843418860808e-14 !!!

    Je ne comprend pas pourquoi, j'ai essayé avec une colonne REAL, MONEY et FLOAT, j'ai toujours le même résultat.

    Quelqu'un peut m'aider?

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    6 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 6 058
    Points : 16 093
    Points
    16 093

    Par défaut

    Ce sont les "limites" des nombres en virgule flottante.
    Utilise un type DECIMAL ou NUMBER s'ils sont disponibles avec SQlite
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    janvier 2009
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2009
    Messages : 479
    Points : 790
    Points
    790

    Par défaut

    Bonjour,

    Si j'en fais la somme à la main, j'arrive a zéro... Mais en faisant un select sum(prix) SQLITE me retourne 5.6843418860808e-14 !!!

    Je ne comprend pas pourquoi, j'ai essayé avec une colonne REAL, MONEY et FLOAT, j'ai toujours le même résultat.
    Tu pourrais nous présenter ta requête complète. Je pense qu'il faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST(SUM(prix) AS DECIMAL(10,2)) AS Ecart FROM NomTable
    Tu peux faire également
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST(SUM(prix) * 100.0 AS INTEGER) / 100.0 AS Ecart FROM NomTable
    Je n'ai pas testé, mais l'idée est là.

    A+

  4. #4
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : juillet 2012
    Messages : 11
    Points : 4
    Points
    4

    Par défaut

    Bonjour,

    Merci pour vos réponses, ma requête est simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select sum(prix) from compta
    J'ai créé des tables TEMP avec des colonnes REAL et FLOAT. J'avais aussi essayé DECIMAL. Ma méthode de transfert était la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO temp
    SELECT * 
    FROM compta
    Je me demande si cette méthode est efficace, les données sont bien copiées mais j'ai l'impression que SQLITE conserve le type d'origine.

    Je vais essayer avec le CAST tantôt et reviens avec les résultats.

    merci.

  5. #5
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : juillet 2012
    Messages : 11
    Points : 4
    Points
    4

    Par défaut

    J'ai eu le même résultat avec la première option:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST(SUM(prix) AS DECIMAL(10,2)) AS Ecart FROM COMPTA
    Mais je suis arriver au bon résultat avec la deuxième:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST(SUM(prix) * 100.0 AS INTEGER) / 100.0 AS Ecart FROM COMPTA
    Merci beaucoup!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/12/2011, 14h06
  2. Occlusion query : résultats étranges
    Par missroot dans le forum OpenGL
    Réponses: 14
    Dernier message: 12/12/2005, 11h56
  3. Utiliser le résultat de SELECT Sum dans If
    Par samlepiratepaddy dans le forum Requêtes et SQL.
    Réponses: 33
    Dernier message: 15/11/2005, 08h38
  4. COUNT(*), résultat étrange
    Par JuTs dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/10/2005, 15h54
  5. Résultat étrange avec les lumières.
    Par MaxPayne dans le forum OpenGL
    Réponses: 4
    Dernier message: 12/04/2005, 18h04

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