Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2012, 12h47   #1
Membre chevronné
 
Avatar de pinocchio
 
Homme François
Développeur informatique
Inscription : novembre 2002
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 35
Localisation : France, Yvelines (Île de France)

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

Informations forums :
Inscription : novembre 2002
Messages : 773
Points : 787
Points : 787
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 :
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 :
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)
pinocchio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 14h09   #2
Membre expérimenté
 
François
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : François

Informations forums :
Inscription : février 2010
Messages : 306
Points : 537
Points : 537
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 :
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" ?
Rams7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 14h31   #3
Membre chevronné
 
Avatar de pinocchio
 
Homme François
Développeur informatique
Inscription : novembre 2002
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 35
Localisation : France, Yvelines (Île de France)

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

Informations forums :
Inscription : novembre 2002
Messages : 773
Points : 787
Points : 787
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)
pinocchio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 15h19   #4
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
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/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/01/2012, 15h25   #5
Membre chevronné
 
Avatar de pinocchio
 
Homme François
Développeur informatique
Inscription : novembre 2002
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 35
Localisation : France, Yvelines (Île de France)

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

Informations forums :
Inscription : novembre 2002
Messages : 773
Points : 787
Points : 787
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)
pinocchio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 15h30   #6
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
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/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 15h33   #7
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Ah ben tiens, regarde ça :
http://www.developpez.net/forums/d55...ts-differents/

__________________

(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/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 15h40   #8
Membre chevronné
 
Avatar de pinocchio
 
Homme François
Développeur informatique
Inscription : novembre 2002
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 35
Localisation : France, Yvelines (Île de France)

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

Informations forums :
Inscription : novembre 2002
Messages : 773
Points : 787
Points : 787
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)
pinocchio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h25.


 
 
 
 
Partenaires

Hébergement Web