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

SQL Oracle Discussion :

Incohérence dans le calcul d'une somme


Sujet :

SQL Oracle

  1. #1
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Points : 960
    Points
    960
    Par défaut Incohérence dans le calcul d'une somme
    Bonjour,
    Je n'ai plus vraiment de souci car j'ai trouvé une solution mais je ne comprends pas bien l'origine exacte du problème.
    En 11g : Tout va bien, pas de souci.
    Problème, ma prod est en 10g et là souci.

    J'ai une table de 184000 enregistrements à peu près.
    Dans cette table, je travaille uniquement sur 3 champs
    Annee : number not null (11 années différentes)
    Entite : number not null (17000 entites)
    montant : number not null

    index sur annee,entite

    j'effectue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Create table fm_vers as 
    select  annee,entite, 
    sum(montant) 
    from  vers_mnt
    group by  entite,annee ;
    Lorsque je regarde le résultat, ma somme est incorrecte pour certaines entités et années. 6 cas sur des milliers de lignes.
    Pour obtenir un peu moins d'erreurs, il me suffit d'inverser l'ordre du group by. Je me retrouve avec encore 4 erreurs.
    Au final, ma requête rendant les résultats complètement correct a besoin d'un order by sur entite à la fin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Create table fm_vers as 
    select  annee,entite, 
    sum(montant) 
    from  vers_mnt
    group by  annee,entite
    order by entite;
    Je ne vois pas ce qui pose le problème en 10g, cela reste une somme assez simple.

    Si l'on part de la requête d'origine, où des erreurs existent, il suffit d'ajouter un where sur l'entité problèmatique pour ne pas voir d'erreurs. Je pourrai utiliser un curseur mais la requête reste basique donc je préfèrerai m'en passer.


    Si vous avez des explications, je suis preneur.
    Merci
    La SNCF est mon ami
    blog PARIS-GRANVILLE
    Inscription au panel IPSOS (possibilité d'avoir des bons d'achats)

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 412
    Points : 807
    Points
    807
    Par défaut
    Bonjour,

    Ca veut dire quoi que la somme n'est pas correcte?
    Au lieu d'avoir 120, Oracle vous donne 119?

    Ou alors, est-ce que par hasard, vous vous attendiez a voir ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select * from fm_vers;
    annee   entite   somme
    2000      a         120
    2001      a         354 
    2000      b         1231
    2005      c         12
    Et vous avez ca, mais avec les lignes "dans le desordre" ?

  3. #3
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Points : 960
    Points
    960
    Par défaut
    La somme est réellement fausse
    En 10g, pour 4 entités, j'ai une erreur sur la somme.
    Par exemple 9300 + 1122.15=9300.
    Alors qu'en 11g, le résultat est bien 10422.15
    La SNCF est mon ami
    blog PARIS-GRANVILLE
    Inscription au panel IPSOS (possibilité d'avoir des bons d'achats)

  4. #4
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Quelle version exacte ?

    (J'avais entendu parler d'un bug sur le hash group by, patché ensuite...)

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  5. #5
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Points : 960
    Points
    960
    Par défaut
    La version en prod est la 10.2.0.2.0.

    Merci
    La SNCF est mon ami
    blog PARIS-GRANVILLE
    Inscription au panel IPSOS (possibilité d'avoir des bons d'achats)

  6. #6
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Du mal à trouver plus de détail, mais il y avait le bug 4604970 qui a été corrigé en 10.2.0.3 il paraît.

    Sinon, tu peux aussi désactiver le hash group by avec _gby_hash_aggregation_enabled = false

    Parles-en à ton DBA.

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  7. #7
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  8. #8
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Points : 960
    Points
    960
    Par défaut
    Merci beaucoup, cela devrait m'aider.
    Le patch va être mis sous peu avec de tels arguments.
    Cordialement
    La SNCF est mon ami
    blog PARIS-GRANVILLE
    Inscription au panel IPSOS (possibilité d'avoir des bons d'achats)

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

Discussions similaires

  1. Cognos calcul d'une somme dans un cube
    Par Payette dans le forum Cognos
    Réponses: 0
    Dernier message: 26/11/2013, 17h18
  2. Réponses: 8
    Dernier message: 03/07/2013, 17h46
  3. Calcul d'une somme dans une table
    Par bsangoku dans le forum Access
    Réponses: 12
    Dernier message: 24/01/2013, 22h05
  4. [MySQL] Calcul d'une somme dans une boucle VERSUS Calcul via la fonction MySQL SUM
    Par 2o1oo dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 13/10/2010, 09h32
  5. Calcul d'une somme dans Excel ??
    Par LaVaZza dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/06/2006, 22h55

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