Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Странное поведение group by. Или лыжи не едут или я..... / 25 сообщений из 35, страница 1 из 2
07.05.2019, 15:58
    #39810760
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
странности с групп бай.
Оракл 12.2 на линуксе. RAC
Выполняю запрос, данных там миллионы строк, с воспроизведением будут проблемы :-)
получаю результат, с дублями полей из групп бай.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
select t.brid, 
sum(dl.summ/k.krsp),
s.summ summ_sk,
case when nvl(s.summ,0)<>0 then  sum(dl.summ/k.krsp)/(s.summ) else null end k
from doc d
join docl dl on dl.did=d.id
join tov t on t.id=dl.tid
join docsub ds on ds.id=d.id
join krs_day k on trunc(d.DT)= K.DT and k.currid= 22
left join(
select aa.brid,avg(aa.summ)summ from(
select t.brid,s1.dt dt,sum(s1.q
*t.cena0/k.krsp)/2 summ
from(select s.tid,s.dt dt,sum(s.q)q
from sk_by_dt s
where s.dt in(
select trunc(LAST_DAY(ADD_MONTHS(sysdate,-13+level))) dt from dual
connect by level < 13)
group by s.tid,s.dt
)s1
join krs_day k on s1.dt = K.DT and k.currid= 22
join tov t on t.id=s1.tid
group by t.brid,s1.dt
) aa
group by aa.brid
) s on s.brid=t.brid 
where D.tpk='N' and d.stk in ('P','G','H', 'Z')
and ds.stor=0 
and trunc(D.DT) between ADD_MONTHS(TRUNC(sysdate, 'mm'),-12) and LAST_DAY(ADD_MONTHS(trunc(sysdate),-1))
group by t.brid,s.summ
order by t.brid


результат приложен в виде файла.
как можно заметить строки с brid 4154,4165,4167 задвоились.
что забавно если перед последним group by добавить сроку
and t.brid in (4154,4165,4167)
то задвоения не происходит.
и, как заметил на последних тестах, двоятся строки не всегда одни и теже.
вероятно, я несколько путано изложил суть.
и прошу простить не понял как скриншоты прикладывать в удобоваримом виде.
...
Рейтинг: 0 / 0
07.05.2019, 16:19
    #39810776
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
Надфиль,

Код: plsql
1.
on     s.brid = t.brid

?
...
Рейтинг: 0 / 0
07.05.2019, 16:22
    #39810781
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
Надфиль,

no_parallel
...
Рейтинг: 0 / 0
07.05.2019, 16:23
    #39810782
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
123йй,

и? что в этом потенциально криминального?
...
Рейтинг: 0 / 0
07.05.2019, 16:34
    #39810789
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
-2-Надфиль,

no_parallel
хинт не помог (да и не должен, везде где мог я указал мануал и т.д в настройках сервера)
зато начала двоится строка с ид 4168...
ну в начале моих исследований она тоже двоилась, потом решила не двоится. сейчас опять двоится..
чертовщина какая-та.
общего только то, что двоится совсем чуть чуть. т.е. в одной строке sum большой, а в задвоенной маленький..
...
Рейтинг: 0 / 0
07.05.2019, 16:58
    #39810796
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
Надфиль,

у Вас жеж группировка по t.brid,s.summ


если убрать s.summ?

s.summ мож разные в "н-м разряде"

.....
stax
...
Рейтинг: 0 / 0
07.05.2019, 17:03
    #39810801
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
StaxНадфиль,

у Вас жеж группировка по t.brid,s.summ


если убрать s.summ?

s.summ мож разные в "н-м разряде"

.....
stax
я проверял внутренний запрос из которого берется s.summ
там на каждое brid ровно одно значение..
если целиком убрать подзапрос, то задвоений нет.
но их нет и в подзапросе.
не, я могу, конечно, переписать запрос совсем по другому. мне просто тут интересно разобраться в причинах. ибо если глючит один запрос, не факт что не глючит полсотни других. просто я и коллеги их еще не видели. и от этой мысли волосы в неположенных местах начинают шевелится.
...
Рейтинг: 0 / 0
07.05.2019, 17:06
    #39810803
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
Staxs.summ мож разные в "н-м разряде"

да и как я написал в первом сообщении.
если двоящиеся brid включить where, то двоится магически перестает.
Пойду приму витамины..
...
Рейтинг: 0 / 0
07.05.2019, 17:21
    #39810808
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
НадфильStaxs.summ мож разные в "н-м разряде"

да и как я написал в первом сообщении.
если двоящиеся brid включить where, то двоится магически перестает.
Пойду приму витамины..

group by t.brid,trunc(s.summ,8) не двоит?


.....
stax
...
Рейтинг: 0 / 0
07.05.2019, 17:33
    #39810815
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
Staxgroup by t.brid,trunc(s.summ,8) не двоит?

да это помогло.
но вы таки будете смеяться, но как?
оно что для внутреннего подзапроса. хранило несколько пар (ну или откудато брало) с разной точностью?
...
Рейтинг: 0 / 0
07.05.2019, 17:38
    #39810818
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
Надфиль,

выведи в строку длиной 38
увидишь разницу
...
Рейтинг: 0 / 0
07.05.2019, 17:42
    #39810820
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
andreymxНадфиль,

выведи в строку длиной 38
увидишь разницу
я не должен ее увидеть. есть две пара brid summ почему мне втрое значение нужно возвращать "по разному"?
...
Рейтинг: 0 / 0
07.05.2019, 17:58
    #39810829
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
Надфиль"по разному"?
Планчики поизучайте пристально.
Иногда случаются баговые трансформации.
...
Рейтинг: 0 / 0
07.05.2019, 17:59
    #39810831
j2k
j2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
...
Рейтинг: 0 / 0
07.05.2019, 17:59
    #39810832
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
НадфильStaxgroup by t.brid,trunc(s.summ,8) не двоит?

но вы таки будете смеяться, но как?
оно что для внутреннего подзапроса. хранило несколько пар (ну или откудато брало) с разной точностью?

не буду смеятся, наоборот радуюсь что сразу вылезло, бувает выстрелит через месяцы

теперь Вам надо акуратненько найти почему суммы разные
и вообще правильно ли именно по суме группировать

аккуратненько проверить что там считается по месяцам и найдете причину разных сумм

зы
1/3+1/3+1/3 <> 1

....
stax
...
Рейтинг: 0 / 0
07.05.2019, 18:04
    #39810837
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
помню в делфовой ветке не раз публиковали ссылку на статью про числовые типы данных
=>
Группировать по нецелым числам - то еще дело
...
Рейтинг: 0 / 0
07.05.2019, 18:05
    #39810840
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
НадфильandreymxНадфиль,

выведи в строку длиной 38
увидишь разницу
я не должен ее увидеть. есть две пара brid summ почему мне втрое значение нужно возвращать "по разному"?
не второе значение, а оба

выведите больше знаков для summ_sk
col summ_sk format 000000000000.9999999999999999999999999999999999999999999999999 (39 девяток)
на крайняк dump(summ_sk)

.....
stax
...
Рейтинг: 0 / 0
07.05.2019, 18:08
    #39810845
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
andreymxпомню в делфовой ветке не раз публиковали ссылку на статью про числовые типы данных
=>
Группировать по нецелым числам - то еще дело

можно влоб trunc(s1.q*t.cena0/k.krsp,хх)

но імхо луче найти где и почему набегают хвостики

....
stax
...
Рейтинг: 0 / 0
07.05.2019, 18:12
    #39810849
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
все таки мне кажется это некий косяк от оракла.
например, когда я ограничивал выборку несколькими значениями brid, для которых наблюдались задвоения, все становилось нормально и без округления.
всем спасибо. надеюсь темы была не бесполезной...
и пойду приму усиленную дозу витаминов ;-)
...
Рейтинг: 0 / 0
07.05.2019, 18:22
    #39810859
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
Надфильвсе таки мне кажется это некий косяк от оракла.
например, когда я ограничивал выборку несколькими значениями brid, для которых наблюдались задвоения, все становилось нормально и без округления.
всем спасибо. надеюсь темы была не бесполезной...
и пойду приму усиленную дозу витаминов ;-)

возможно и косяк, посмотрите в плане куда и как оракля раскладывает предикаты,
мож и впрям непраильно "трансформировал/оптимизировал"

зы
надеюсь что хоть сами значения summ_sk правильные

....
stax
...
Рейтинг: 0 / 0
07.05.2019, 18:29
    #39810861
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
Staxна крайняк dump(summ_sk)

вот как то так.
...
Рейтинг: 0 / 0
07.05.2019, 18:29
    #39810862
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
Надфиль,

и еще, обратите внимание
к для плохих сумм очень маленькое, не знаю что оно значит на практике
но как бы намекает на непростые k.krsp для дублей, а не на баг оракля

....
stax
...
Рейтинг: 0 / 0
07.05.2019, 18:37
    #39810867
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
[quot Stax]Надфиль посмотрите в плане куда и как оракля раскладывает предикаты
план у нас такой.
...
Рейтинг: 0 / 0
07.05.2019, 18:38
    #39810870
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
Staxк для плохих сумм очень маленькое
сумма маленькая и к маленькое. и это правильно.
...
Рейтинг: 0 / 0
07.05.2019, 19:11
    #39810883
проходил мимо...
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение group by. Или лыжи не едут или я.....
НадфильStaxна крайняк dump(summ_sk)

вот как то так.
на всякий случай спрошу.
вы же увидели разницу, правда?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Странное поведение group by. Или лыжи не едут или я..... / 25 сообщений из 35, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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