powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Непонятное поведение SUM()
7 сообщений из 7, страница 1 из 1
Непонятное поведение SUM()
    #39966545
Евгения_Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Подскажите пожалуйста.
Делаю запрос:
Код: plsql
1.
2.
3.
4.
5.
select sum(t1.n1) as sum1, sum(t2.n2) as sum2, sum(t1.n1) + sum(t2.n2) as sum1_2
from t1
  left join t2
        on t2.a = t1.a
       and t2.b = t1.b


Получаю результат и вижу, что sum1 + sum2 != sum1_2
Почему так получается и как получить верное суммарное поле?
Хотелось доработать вьюху малой кровью, добавить таблицу t2 и в поле sum1 сделать sum(t1.n1) + sum(t2.n2),
но не получается.
Как можно исправить ситуацию?
...
Рейтинг: 0 / 0
Непонятное поведение SUM()
    #39966547
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгения_Д,

И насколько отличаются? Тест кейс в студию.

SY.
...
Рейтинг: 0 / 0
Непонятное поведение SUM()
    #39966563
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгения_Д

Получаю результат и вижу, что sum1 + sum2 != sum1_2
Почему так получается и как получить верное суммарное поле?

Ну если t1 и t2 - именно таблицы, то такого происходить не должно.
В этом случае придется искать источник wrong results, отключая разные фишки типа result cache, тщательно изучая план, читать металинк и т.д...
А вот если t1 или t2 окажется, к примеру, вьюхой над функцией, то расклад существенно поменяется.
...
Рейтинг: 0 / 0
Непонятное поведение SUM()
    #39966565
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, простой тест: как изменится поведение Вашего запроса, если в сессии перед ним выполнить
Код: plsql
1.
Alter session set isolation_level=serializable;
...
Рейтинг: 0 / 0
Непонятное поведение SUM()
    #39966570
Фотография 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
...
Рейтинг: 0 / 0
Непонятное поведение SUM()
    #39966575
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous

Ну если t1 и t2 - именно таблицы, то такого происходить не должно.


Тут еще и погрешность client tool надо учитывать.

SY.
...
Рейтинг: 0 / 0
Непонятное поведение SUM()
    #39966576
Евгения_Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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, спасибо!
Дело было именно в округлении.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Непонятное поведение SUM()
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]