Somme inexacte mysql
Résolu
mont_dani
Messages postés
232
Date d'inscription
Statut
Membre
Dernière intervention
-
mont_dani Messages postés 232 Date d'inscription Statut Membre Dernière intervention -
mont_dani Messages postés 232 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
La somme que j'effectue php/mysql n'est pas correct.
Voici la requete
Ma table
ID DATE T_MINI T_MAXI LLUVIA
3621 2020-12-01 3,1 12,6
3622 2020-12-02 6,3 9,9
3623 2020-12-03 2,5 9,6
3624 2020-12-04 1,4 4 36
3625 2020-12-05 1,5 4,5 8
3626 2020-12-06 2,7 8,4 7
3627 2020-12-07 4,5 7,9 17
3628 2020-12-08 4 7,9 5
3629 2020-12-09 2,5 11 8
Résultat MYSQL ==>
MONTH(DATE) SUM(T_MINI) SUM(T_MAXI) SUM(LLUVIA)
12 25 71 81
RESULTAT CORRECT
MONTH(DATE) SUM(T_MINI) SUM(T_MAXI) SUM(LLUVIA)
12 28.5 75.8 81
et plus je selectionne de ligne plus l'erreur est grande.
POUVEZ-VOUS ME DIRE OU JE ME TROMPE OU CE QUE JE FAIS MAL?
MERCI POUR VOTRE AIDE
La somme que j'effectue php/mysql n'est pas correct.
Voici la requete
SELECT MONTH(DATE), SUM(T_MINI), SUM(T_MAXI), SUM(LLUVIA) FROM `releve-2` WHERE DATE >'2020-11-30' AND DATE < '2020-12-10' GROUP BY MONTH(DATE);
Ma table
ID DATE T_MINI T_MAXI LLUVIA
3621 2020-12-01 3,1 12,6
3622 2020-12-02 6,3 9,9
3623 2020-12-03 2,5 9,6
3624 2020-12-04 1,4 4 36
3625 2020-12-05 1,5 4,5 8
3626 2020-12-06 2,7 8,4 7
3627 2020-12-07 4,5 7,9 17
3628 2020-12-08 4 7,9 5
3629 2020-12-09 2,5 11 8
Résultat MYSQL ==>
MONTH(DATE) SUM(T_MINI) SUM(T_MAXI) SUM(LLUVIA)
12 25 71 81
RESULTAT CORRECT
MONTH(DATE) SUM(T_MINI) SUM(T_MAXI) SUM(LLUVIA)
12 28.5 75.8 81
et plus je selectionne de ligne plus l'erreur est grande.
POUVEZ-VOUS ME DIRE OU JE ME TROMPE OU CE QUE JE FAIS MAL?
MERCI POUR VOTRE AIDE
Configuration: Windows / Chrome 101.0.4951.54
A voir également:
- Somme inexacte mysql
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Mysql community server - Télécharger - Bases de données
- Somme en anglais excel - Guide
- SOMME SI COULEUR ✓ - Forum Excel
6 réponses
Bonjour,
Le calcul est la somme de la partie entière des nombres. Par défaut j'imagine que dans le SGBD le séparateur décimal est un point, pas une virgule. D'ailleurs dans la somme correcte vous mettez un point. T_mini et t_maxi sont-ils bien des nombres, pas une chaine ?
Le calcul est la somme de la partie entière des nombres. Par défaut j'imagine que dans le SGBD le séparateur décimal est un point, pas une virgule. D'ailleurs dans la somme correcte vous mettez un point. T_mini et t_maxi sont-ils bien des nombres, pas une chaine ?
VOICI LA STRUCTURE DE MA TABLE
1 ID int(11) No Ninguna
2 DATE date No Ninguna
3 T_MINI varchar(20) utf8_general_ci Sí NULL
4 T_MAXI varchar(20) utf8_general_ci Sí NULL
5 LLUVIA varchar(10) utf8_general_ci Sí NULL
6 NIEVE text utf8_general_ci Sí NULL
J AVAIS COMMENCER AVEC CETTE STRUCTURE
MAIS J'AVAIS CETTE ERREUR
INSERT INTO `releve-3` VALUES ('3591', '2020-11-01', '15,1', '17,8', '', 'FALSO');
#1366 - Incorrect decimal value: '15,1' for column 'T_MINI' at row 1
1 ID int(11) No Ninguna
2 DATE date No Ninguna
3 T_MINI varchar(20) utf8_general_ci Sí NULL
4 T_MAXI varchar(20) utf8_general_ci Sí NULL
5 LLUVIA varchar(10) utf8_general_ci Sí NULL
6 NIEVE text utf8_general_ci Sí NULL
J AVAIS COMMENCER AVEC CETTE STRUCTURE
1 ID int(11) No Ninguna 2 DATE date No Ninguna 3 T_MINI decimal(20,0) No Ninguna 4 T_MAXI decimal(20,0) No Ninguna 5 LLUVIA decimal(20,0) No Ninguna 6 NIEVE text utf8_general_ci No Ninguna
MAIS J'AVAIS CETTE ERREUR
INSERT INTO `releve-3` VALUES ('3591', '2020-11-01', '15,1', '17,8', '', 'FALSO');
#1366 - Incorrect decimal value: '15,1' for column 'T_MINI' at row 1
une somme sur du varchar c'est une mauvaise idée
il faut que dans ton insert tu remplaces les nombres à virgule par le point
et que dans la définition de la table tu mettes decimal(20,1) s'il n'y a toujours qu'une décimale. A noter que dans cette syntaxe, la virgule est un séparateur de paramètres, (longueur, nombre decimales), pas LE séparateur décimal.
il faut que dans ton insert tu remplaces les nombres à virgule par le point
et que dans la définition de la table tu mettes decimal(20,1) s'il n'y a toujours qu'une décimale. A noter que dans cette syntaxe, la virgule est un séparateur de paramètres, (longueur, nombre decimales), pas LE séparateur décimal.
Super merci pour ton aide.
Une question sur cette requete
Je vex obtenir données pour le printemps, l'été, l'automne et l'hivers de chaque année.
J'ai renseigné la date ainsi "MONTH(DATE) > 2, DAY(DATE >19 AND MONTH(DATE) <7, DAY(DATE) <21" mais cela ne focntionne pas.
Comment dois-je ecrire cette partie de la requête?
D'avance merci
Une question sur cette requete
'SELECT YEAR(DATE), MONTH(DATE), DAY(DATE) AVG(T_MINI), AVG(T_MAXI), SUM(LLUVIA) FROM releve WHERE MONTH(DATE) > 2, DAY(DATE >19 AND MONTH(DATE) <7, DAY(DATE) <21 GROUP BY YEAR(DATE);
Je vex obtenir données pour le printemps, l'été, l'automne et l'hivers de chaque année.
J'ai renseigné la date ainsi "MONTH(DATE) > 2, DAY(DATE >19 AND MONTH(DATE) <7, DAY(DATE) <21" mais cela ne focntionne pas.
Comment dois-je ecrire cette partie de la requête?
D'avance merci
Je ne comprends vraiment pas vers quoi tu t'orientes avec ta requete ;-)
Il existe plusieurs difficultés à la notion de saison, l'hiver est à cheval sur 2 années, et le jour exact du début d'une saison peut varier.
Tu devrais plutôt traiter les trimestres, beaucoup plus facile, avec quarter(date)
Il existe plusieurs difficultés à la notion de saison, l'hiver est à cheval sur 2 années, et le jour exact du début d'une saison peut varier.
Tu devrais plutôt traiter les trimestres, beaucoup plus facile, avec quarter(date)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour cette réponse.
Je rencontre un autre probleme avec les cellules vides.
Je créé mon fichier CSV a partir d'une table excel.
Avec ce CSV, SQL ne me permet pas importer les données a cause des champs vides:
1;2011-01-02;-1.2;8.5;;FALSO;2011-01-12
2;2011-01-03;;;21;FALSO;2011-01-13
J'ai donc remplacer les champs vides par une valeur (-1000) et mon CSV deveint
1;2011-01-02;-1000;-1000;-1000;FALSO;2011-01-12
2;2011-01-03;-1000;-1000;21;FALSO;2011-01-13
La structure de ma table
1 ID int(11) No Ninguna
2 DATE date No Ninguna
3 T_MINI decimal(20,2) Sí NULL
4 T_MAXI decimal(20,1) Sí NULL
5 LLUVIA decimal(20,0) Sí NULL
6 NIEVE text utf8_general_ci Sí NULL
7 SAISON date No Ninguna
Ma requete pour remplacer la valeur -1000 CSV -1000.00 SQL par null est:
J'ai cette erreur
UPDATE releve SET T_MINI= replace(T_MINI, '-1000.00', 'null');
MySQL ha dicho: Documentación
#1366 - Incorrect decimal value: 'null' for column 'T_MINI' at row 1
En remplacant null par ""
UPDATE releve SET T_MINI= replace(T_MINI, '-1000.00', '');
MySQL ha dicho: Documentación
#1366 - Incorrect decimal value: '' for column 'T_MINI' at row 1
Pourrais-tu me dire ou est le probleme? Par avance merci
Je rencontre un autre probleme avec les cellules vides.
Je créé mon fichier CSV a partir d'une table excel.
Avec ce CSV, SQL ne me permet pas importer les données a cause des champs vides:
1;2011-01-02;-1.2;8.5;;FALSO;2011-01-12
2;2011-01-03;;;21;FALSO;2011-01-13
J'ai donc remplacer les champs vides par une valeur (-1000) et mon CSV deveint
1;2011-01-02;-1000;-1000;-1000;FALSO;2011-01-12
2;2011-01-03;-1000;-1000;21;FALSO;2011-01-13
La structure de ma table
1 ID int(11) No Ninguna
2 DATE date No Ninguna
3 T_MINI decimal(20,2) Sí NULL
4 T_MAXI decimal(20,1) Sí NULL
5 LLUVIA decimal(20,0) Sí NULL
6 NIEVE text utf8_general_ci Sí NULL
7 SAISON date No Ninguna
Ma requete pour remplacer la valeur -1000 CSV -1000.00 SQL par null est:
UPDATE releve SET T_MINI= replace(T_MINI, '-1000.00', 'null');
J'ai cette erreur
UPDATE releve SET T_MINI= replace(T_MINI, '-1000.00', 'null');
MySQL ha dicho: Documentación
#1366 - Incorrect decimal value: 'null' for column 'T_MINI' at row 1
En remplacant null par ""
UPDATE releve SET T_MINI= replace(T_MINI, '-1000.00', '');
MySQL ha dicho: Documentación
#1366 - Incorrect decimal value: '' for column 'T_MINI' at row 1
Pourrais-tu me dire ou est le probleme? Par avance merci