Страница 1 из 1
Ошибка MySQL чтоле ...
Добавлено: 2012-06-06 13:28:35
Alex Keda
Код: Выделить всё
mysql> SELECT * FROM `WorksCompliteAgregate` WHERE (`ContractID` = 10369 AND `Month` = 497);
+---------+------------+-------+-----------+---------+--------+---------+--------+
| ID | ContractID | Month | ServiceID | Comment | Cost | Discont | Amount |
+---------+------------+-------+-----------+---------+--------+---------+--------+
| 8843074 | 10369 | 497 | 10000 | ?20440 | 1.67 | 0.10 | 365 |
| 8843077 | 10369 | 497 | 20000 | ?20441 | 150.00 | 1.00 | 1 |
+---------+------------+-------+-----------+---------+--------+---------+--------+
2 rows in set (0.92 sec)
mysql> SELECT SUM(`Amount`*`Cost`*(1-`Discont`)*100)/100 as `Summ` FROM `WorksCompliteAgregate` WHERE (`ContractID` = 10369 AND `Month` = 497);
+------------+
| Summ |
+------------+
| 548.594985 |
+------------+
1 row in set (0.91 sec)
mysql> SELECT 365 * 1.67 * ( 1 - 0.10);
+--------------------------+
| 365 * 1.67 * ( 1 - 0.10) |
+--------------------------+
| 548.5950 |
+--------------------------+
1 row in set (0.00 sec)
mysql>
шо за ахтунг?
==
часть *100)/100 - это я добавил - когда понял что число явно не то выдаётся и попытался понять что не так
Re: Ошибка MySQL чтоле ...
Добавлено: 2012-06-06 13:33:01
GhOsT_MZ
А в чем косяк? Округляет до разных разрядов?
Re: Ошибка MySQL чтоле ...
Добавлено: 2012-06-06 13:45:18
GhOsT_MZ
Кстати, а зачем здесь функцию SUM использовать, она же аггрегационная по сути?
Re: Ошибка MySQL чтоле ...
Добавлено: 2012-06-06 13:48:46
Alex Keda
считает неправильно, вообще-то
Re: Ошибка MySQL чтоле ...
Добавлено: 2012-06-06 14:22:36
GhOsT_MZ
И правда...
А если без SUM попробовать, какие результаты для обоих строк вернет?
Re: Ошибка MySQL чтоле ...
Добавлено: 2012-06-06 14:30:32
Alex Keda
тоже неверные
Код: Выделить всё
mysql> SELECT `Amount`*`Cost`*(1-`Discont`) as `Summ` FROM `WorksCompliteAgregate` WHERE (`ContractID` = 10369 AND `Month` = 497);
+--------+
| Summ |
+--------+
| 548.59 |
| 0.00 |
+--------+
2 rows in set (0.97 sec)
mysql>
Re: Ошибка MySQL чтоле ...
Добавлено: 2012-06-10 20:35:21
FiL
ачто неправильно? Что округление проводится? A какая версия мускула?
Re: Ошибка MySQL чтоле ...
Добавлено: 2012-06-13 10:49:17
Gamerman
SUM(`Amount`*`Cost`*(1-`Discont`)*100)/100 и SUM(`Amount`*`Cost`*(1-`Discont`)*100/100) - часто будет разным за счет разного алгоритма округления.
Re: Ошибка MySQL чтоле ...
Добавлено: 2013-02-15 14:16:59
Alex Keda
однако, в расылке мусечной подсказали - поля у меня float, а для таких рассчётов они должны быть decimal