Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  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 Alain
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    5 483
    Détails du profil
    Informations personnelles :
    Nom : Homme Alain
    Âge : 53
    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 : 5 483
    Points : 13 699
    Points
    13 699

    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
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2009
    Messages : 445
    Points : 710
    Points
    710

    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 :
    SELECT CAST(SUM(prix) AS DECIMAL(10,2)) AS Ecart FROM NomTable
    Tu peux faire également
    Code :
    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 :
    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 :
    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 :
    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 :
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •