Ciao,
la funzione SUM di MySQL si comporta in modo strano.
Ho la seguente tabella:
codice:
+----+-------+----------+---------------+
| id | price | currency | category |
+----+-------+----------+---------------+
| 1 | 15 | USD | abbigliamento |
+----+-------+----------+---------------+
| 2 | 25 | EUR | gioielli |
+----+-------+----------+---------------+
| 3 | 28 | USD | abbigliamento |
+----+-------+----------+---------------+
| 4 | 48 | GBP | gioielli |
+----+-------+----------+---------------+
| 5 | 11 | GBP | casa |
+----+-------+----------+---------------+
| 6 | 35 | GBP | casa |
+----+-------+----------+---------------+
| 7 | 191 | USD | casa |
+----+-------+----------+---------------+
| 8 | 48.45 | GBP | gioielli |
+----+-------+----------+---------------+
| 9 | 12.5 | EUR | casa |
+----+-------+----------+---------------+
| 10 | 25.2 | EUR | abbigliamento |
+----+-------+----------+---------------+
La cui struttura è:
id INT(10) UNSIGNED NOT NULL auto_increment,
price float unsigned NOT NULL default '0',
currency VARCHAR(3) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',
category VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',
PRIMARY KEY(id)
Per calcolare la somma dei valori della colonna price lancio la semplice query:
$query = "SELECT SUM(price) FROM tbl";
La somma effettiva è 429.15, ma MySQL restituisce 429.15000152588
La stessa cosa avviene con la funzione AVG().
La media effettiva dei valori del campo price è 429.15 / 10 = 42.915, invece MySQL restituisce 42.915000152588
Cosa c'entra quel 0.000000152588 che viene aggiunto ai valori reali?
Perché questa discrepanza?
Sto usando questa piccola tabella di test per verificare errori più significativi che avvenivano su tabelle più grandi con query molto più complesse.
(Uso la versione MySQL 4.1.20)