MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2012-06-06 13:28:35
Код: Выделить всё
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 - это я добавил - когда понял что число явно не то выдаётся и попытался понять что не так
Убей их всех! Бог потом рассортирует...
Alex Keda
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
GhOsT_MZ
- лейтенант
- Сообщения: 662
- Зарегистрирован: 2011-04-25 11:40:35
-
Контактная информация:
Непрочитанное сообщение
GhOsT_MZ » 2012-06-06 13:45:18
Кстати, а зачем здесь функцию SUM использовать, она же аггрегационная по сути?
GhOsT_MZ
-
Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2012-06-06 13:48:46
считает неправильно, вообще-то
Убей их всех! Бог потом рассортирует...
Alex Keda
-
GhOsT_MZ
- лейтенант
- Сообщения: 662
- Зарегистрирован: 2011-04-25 11:40:35
-
Контактная информация:
Непрочитанное сообщение
GhOsT_MZ » 2012-06-06 14:22:36
И правда...
А если без SUM попробовать, какие результаты для обоих строк вернет?
GhOsT_MZ
-
Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2012-06-06 14:30:32
тоже неверные
Код: Выделить всё
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>
Убей их всех! Бог потом рассортирует...
Alex Keda
-
FiL
- ст. лейтенант
- Сообщения: 1375
- Зарегистрирован: 2010-02-05 0:21:40
Непрочитанное сообщение
FiL » 2012-06-10 20:35:21
ачто неправильно? Что округление проводится? A какая версия мускула?
FiL
-
Gamerman
- капитан
- Сообщения: 1723
- Зарегистрирован: 2009-05-17 21:01:23
- Откуда: Украина, Ужгород - Днепр
-
Контактная информация:
Непрочитанное сообщение
Gamerman » 2012-06-13 10:49:17
SUM(`Amount`*`Cost`*(1-`Discont`)*100)/100 и SUM(`Amount`*`Cost`*(1-`Discont`)*100/100) - часто будет разным за счет разного алгоритма округления.
Глюк глюком вышибают!
Gamerman
-
Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2013-02-15 14:16:59
однако, в расылке мусечной подсказали - поля у меня float, а для таких рассчётов они должны быть decimal
Убей их всех! Бог потом рассортирует...
Alex Keda