|
Непонятное поведение SUM()
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите пожалуйста. Делаю запрос: Код: plsql 1. 2. 3. 4. 5.
Получаю результат и вижу, что sum1 + sum2 != sum1_2 Почему так получается и как получить верное суммарное поле? Хотелось доработать вьюху малой кровью, добавить таблицу t2 и в поле sum1 сделать sum(t1.n1) + sum(t2.n2), но не получается. Как можно исправить ситуацию? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 15:37 |
|
Непонятное поведение SUM()
|
|||
---|---|---|---|
#18+
Евгения_Д, И насколько отличаются? Тест кейс в студию. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 15:45 |
|
Непонятное поведение SUM()
|
|||
---|---|---|---|
#18+
Евгения_Д Получаю результат и вижу, что sum1 + sum2 != sum1_2 Почему так получается и как получить верное суммарное поле? Ну если t1 и t2 - именно таблицы, то такого происходить не должно. В этом случае придется искать источник wrong results, отключая разные фишки типа result cache, тщательно изучая план, читать металинк и т.д... А вот если t1 или t2 окажется, к примеру, вьюхой над функцией, то расклад существенно поменяется. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 16:04 |
|
Непонятное поведение SUM()
|
|||
---|---|---|---|
#18+
Кстати, простой тест: как изменится поведение Вашего запроса, если в сессии перед ним выполнить Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 16:06 |
|
Непонятное поведение SUM()
|
|||
---|---|---|---|
#18+
Евгения_Д, а так select sum(trunc(t1.n1,2)) as sum1, sum(trunc(t2.n2,2)) as sum2, sum(trunc(t1.n1,2)) + sum(trunc(t2.n2,2)) as sum1_2 .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 16:14 |
|
Непонятное поведение SUM()
|
|||
---|---|---|---|
#18+
andrey_anonymous Ну если t1 и t2 - именно таблицы, то такого происходить не должно. Тут еще и погрешность client tool надо учитывать. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 16:25 |
|
Непонятное поведение SUM()
|
|||
---|---|---|---|
#18+
t1 и t2 - это таблицы Stax а так select sum(trunc(t1.n1,2)) as sum1, sum(trunc(t2.n2,2)) as sum2, sum(trunc(t1.n1,2)) + sum(trunc(t2.n2,2)) as sum1_2 .... stax Да, Stax, спасибо! Дело было именно в округлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 16:28 |
|
|
start [/forum/topic.php?fid=52&msg=39966563&tid=1881182]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
132ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 524ms |
0 / 0 |