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

SQLite Discussion :

select sum = résultat étrange


Sujet :

SQLite

  1. #1
    Futur Membre du Club
    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 : 8
    Points
    8
    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
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 778
    Points
    30 778
    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 éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    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
    Futur Membre du Club
    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 : 8
    Points
    8
    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
    Futur Membre du Club
    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 : 8
    Points
    8
    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, 15h06
  2. Occlusion query : résultats étranges
    Par missroot dans le forum OpenGL
    Réponses: 14
    Dernier message: 12/12/2005, 12h56
  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, 09h38
  4. COUNT(*), résultat étrange
    Par JuTs dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/10/2005, 16h54
  5. Résultat étrange avec les lumières.
    Par MaxPayne dans le forum OpenGL
    Réponses: 4
    Dernier message: 12/04/2005, 19h04

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