|
Некорректный результат суммирования значений полей с типом REAL
|
|||
---|---|---|---|
#18+
Доброго. Помогите, пожалуйста, понять как добиться правильного результата при суммировании значений полей с типом REAL. База -- -- Использованная кодировка текста: UTF-8 -- PRAGMA foreign_keys = off; BEGIN TRANSACTION; -- Таблица: temp_table CREATE TABLE temp_table (oper1 REAL, oper2 REAL); INSERT INTO temp_table (oper1, oper2) VALUES (10849.42, ''); INSERT INTO temp_table (oper1, oper2) VALUES (3583.1, ''); INSERT INTO temp_table (oper1, oper2) VALUES (1692.82, ''); INSERT INTO temp_table (oper1, oper2) VALUES (426457.08, 66914); INSERT INTO temp_table (oper1, oper2) VALUES (2162127.76, 222814.95); INSERT INTO temp_table (oper1, oper2) VALUES (119019.55, 17061.57); INSERT INTO temp_table (oper1, oper2) VALUES (65173.57, 3162.88); INSERT INTO temp_table (oper1, oper2) VALUES (105869.34, 27002.5); INSERT INTO temp_table (oper1, oper2) VALUES ('', ''); INSERT INTO temp_table (oper1, oper2) VALUES (52719.41, 2437.83); INSERT INTO temp_table (oper1, oper2) VALUES ('', ''); INSERT INTO temp_table (oper1, oper2) VALUES (36314.74, ''); INSERT INTO temp_table (oper1, oper2) VALUES (33600.35, ''); INSERT INTO temp_table (oper1, oper2) VALUES (255278.81, 101977.5); INSERT INTO temp_table (oper1, oper2) VALUES (904432.22, 176055.26); INSERT INTO temp_table (oper1, oper2) VALUES (162280.1, ''); INSERT INTO temp_table (oper1, oper2) VALUES (3300280.52, ''); INSERT INTO temp_table (oper1, oper2) VALUES (4109467.11, ''); INSERT INTO temp_table (oper1, oper2) VALUES (4652.7, ''); INSERT INTO temp_table (oper1, oper2) VALUES (1511640.1, 378057); INSERT INTO temp_table (oper1, oper2) VALUES (397621.43, 115545.63); INSERT INTO temp_table (oper1, oper2) VALUES (2732456.43, 456588.83); INSERT INTO temp_table (oper1, oper2) VALUES (718777.19, ''); INSERT INTO temp_table (oper1, oper2) VALUES (3932427.05, 526686.59); INSERT INTO temp_table (oper1, oper2) VALUES (3745034.4, 1845.6); INSERT INTO temp_table (oper1, oper2) VALUES (659265, 58769); INSERT INTO temp_table (oper1, oper2) VALUES (216995, 60027); INSERT INTO temp_table (oper1, oper2) VALUES (899825.28, 87760.52); INSERT INTO temp_table (oper1, oper2) VALUES (58337.63, ''); INSERT INTO temp_table (oper1, oper2) VALUES (6022.02, ''); INSERT INTO temp_table (oper1, oper2) VALUES (478812.7, ''); INSERT INTO temp_table (oper1, oper2) VALUES (362582.04, ''); INSERT INTO temp_table (oper1, oper2) VALUES (730704.07, 46811.46); INSERT INTO temp_table (oper1, oper2) VALUES (297195.85, ''); INSERT INTO temp_table (oper1, oper2) VALUES ('', ''); INSERT INTO temp_table (oper1, oper2) VALUES (225940.99, 15460.98); INSERT INTO temp_table (oper1, oper2) VALUES (100003, ''); INSERT INTO temp_table (oper1, oper2) VALUES ('', ''); INSERT INTO temp_table (oper1, oper2) VALUES (1035226.75, 3090.69); INSERT INTO temp_table (oper1, oper2) VALUES ('', ''); INSERT INTO temp_table (oper1, oper2) VALUES (2291515.43, 189103.72); INSERT INTO temp_table (oper1, oper2) VALUES (2939022.9, 227428.59); INSERT INTO temp_table (oper1, oper2) VALUES (2846209.76, 355510.22); INSERT INTO temp_table (oper1, oper2) VALUES (856176.97, 121370); INSERT INTO temp_table (oper1, oper2) VALUES (429038.18, 82913.64); INSERT INTO temp_table (oper1, oper2) VALUES (7498, 1392); INSERT INTO temp_table (oper1, oper2) VALUES (16572, 4212); INSERT INTO temp_table (oper1, oper2) VALUES (10785617.86, 2077989.12); INSERT INTO temp_table (oper1, oper2) VALUES (1786922.32, 252411.65); INSERT INTO temp_table (oper1, oper2) VALUES (1979989.43, 466456.64); COMMIT TRANSACTION; PRAGMA foreign_keys = on; Запрос Код: sql 1. 2. 3.
В результате выполнения запроса ожидал увидеть в поле "opr1+oper2" правильные суммы, с точностью до второго знака после запятой. Однако значения поля "opr1+oper2" в строках с номерами 10, 22, 41-43 вычисляется неверно. Как добиться корректного результата? Где я ошибаюсь? Ткните, пожалуйста, носом. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2017, 20:36 |
|
Некорректный результат суммирования значений полей с типом REAL
|
|||
---|---|---|---|
#18+
idefix, 1) Что за значения в ваших строках 10, 22, 41-43? И какое значение получается? Записи в SQLite не нумеруются. У меня всё корректно просуммировалось, проверил результирующую выборку с вычисление суммы столбцов =oper1+oper2 в Excel 2) Использовать "" (пустую строку) это неправильно, либо null, либо число - остальные значения могут вызвать коллизии ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2017, 21:44 |
|
Некорректный результат суммирования значений полей с типом REAL
|
|||
---|---|---|---|
#18+
VSVLAD, Спасибо за ответ. Похоже, менеджер SQLite-баз SQLiteStudio (я использовал версию 3.1.1) не верно отображает результат этого запроса. =( Скриншот результата запроса в SQLiteStudio приложил. В строках, перечисленных в стартовом посте, результат вычисляется с точностью большей, чем два знака после запятой. Этот же запрос, выполненный в оболочке от разработчиков SQLite дал корректный результат. Спасибо за совет использовать NULL. Воспользуюсь. SQLiteStudio выброшу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2017, 09:26 |
|
|
start [/forum/topic.php?fid=54&msg=39427133&tid=2008515]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 132ms |
0 / 0 |