|
|
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
Не понимаю, почему last_value дает такой результат: Код: plaintext 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. Группа одна. Сортируется по del_date. Значит last_value должна вернуть rowid соответсвующий записи с del_date 06.10.2018. То есть AAAFmoAAFAAAAH/AAE. А результата - три разных. Как будто есть три группы. Правильный ответ будет тиолько если я явно указываю безразмерное окно: last_value(t.rowid) over(order by del_date ASC NULLS FIRST ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) Не понимаю, почему так. Люблю галеры - работящий коллектив, романтика мужского труда. Стоишь на мостике в пене брызг и эдак поворотясь: - Голубчик! Утроить количество ударов - Али-паша уходит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:17 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
MaxiflyГруппа одна. Сортируется по del_date. Значит last_value должна вернуть rowid соответсвующий записи с del_date 06.10.2018. То есть AAAFmoAAFAAAAH/AAE. А результата - три разных. Как будто есть три группы. Это потому что кое-кто не понимает, какие умолчания действуют для сортированных окон. Что у нас по синтаксису пишется после order by? Отож :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:23 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW А я-то думал безразмерный по умолчанию. Блин, век живи - век учись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:33 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
MaxiflyА я-то думал безразмерный по умолчанию. Без order by - "безразмерный". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:35 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
Maxiflyandrey_anonymous, ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW А я-то думал безразмерный по умолчанию. Блин, век живи - век учись. Вы уверены что по умолчанию такое окно? імхо ето не так ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 08:58 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
Stax, Да, range. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 09:55 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
LAST_VALUE авторIf you omit the windowing_clause of the analytic_clause, it defaults to RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW. This default sometimes returns an unexpected value, because the last value in the window is at the bottom of the window, which is not fixed. It keeps changing as the current row changes. For expected results, specify the windowing_clause as RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING. Alternatively, you can specify the windowing_clause as RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING. имхо не совсем правильное поведение, по умолчанию должно было бы быть без ограничений, хочешь ограничить указывай как, но что выросло то выросло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 14:48 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorимхо не совсем правильное поведение Еще один воинствующий? Предлагаю поискать систему : Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 14:58 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, лично мне более удобно если БЫ по умолчанию было ROWS ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 15:22 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorимхо не совсем правильное поведение, по умолчанию должно было бы быть без ограничений, хочешь ограничить указывай как, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 15:26 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousSkilledJuniorимхо не совсем правильное поведение Еще один воинствующий? Предлагаю поискать систему : Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Почему сразу воинствующий? Например, max(r) over() и max(r) over(order by r), ты можешь объяснить почему максимальное значение должно зависеть от сортировки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 16:20 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorПочему сразу воинствующий?Потому что не читает документацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 16:30 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorпочему максимальное значение должно зависеть от сортировки?Возможно, пригодится пример из моей книги . Подраздел "Differences and interchangeability of functions", страница 49. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 16:34 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorНапример, max(r) over() и max(r) over(order by r), ты можешь объяснить почему максимальное значение должно зависеть от сортировки? максимальное значение зависит от окна окно разное для over() и over(order by r) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 16:34 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Добавил в избранное, ознакомлюсь попозже, спасибо. Stax, Вопрос как раз в том, почему разное, я не задавал ограничения окна в явном виде, оно наложено по умолчанию потому что так посчитали нужным разработчики, имхо это не совсем верно. ElicПотому что не читает документацию. В документации "что выросло, то выросло", а могло бы быть и по другому, ИМХО по другому было бы логичнее, но это мое ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 16:51 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
Staxлично мне более удобно если БЫ по умолчанию было ROWSдобавляй в order by уникальное значение, хотя бы rownum, и будет тебе "rows". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 16:52 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorВ документации "что выросло, то выросло", а могло бы быть и по другому, ИМХО по другому было бы логичнее, но это мое ИМХО.Ага, злые дяди, писавшие стандарт, забыли спросить у шкета на горшке, как ему будет потом логичнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 16:58 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
ElicАга, злые дяди, писавшие стандарт, забыли спросить у шкета на горшке, как ему будет потом логичнее. Ну да, прямо боги с небес спустились горшки обжигать стандарт писать)) Staxлично мне более удобно если БЫ по умолчанию было ROWS Согласен. andrey_anonymousПредлагаю поискать систему : RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW (по умолчанию), не имеет смысла: max(r) over(order by r) last_value(r) over(order by r) и в том и другом случае они просто равны r не имеет смысла order by: max(r) over(order by r RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) sum(r) over(order by r RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) last_value(r) over() - вообще непредсказуемый результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2018, 01:41 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorRANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW (по умолчанию), не имеет смысла: max(r) over(order by r) last_value(r) over(order by r) и в том и другом случае они просто равны r Да ну? Шел бы ты учить матчасть: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. SkilledJuniorlast_value(r) over() - вообще непредсказуемый результат. С точностью до наоборот. last_value(r) over() всегда вернет последнее в порядке возрастания значение r среди всех выбранных значений r. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2018, 04:35 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorlast_value(r) over() - вообще непредсказуемый результат.Воинствующий ламер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2018, 08:23 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorRANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW (по умолчанию), не имеет смыслакак раз открытая задняя граница в макс не имеет смысла так как совпадает с вообще без указания ордер бы. Причем даже в случае разных выражений макс-значения и сортировки. SkilledJuniorlast_value(r) over() - вообще непредсказуемый результат.Where rownum без сортировки в подзапросе. Кто-то заставляет полагаться на порядок без указания ордер бы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2018, 10:44 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
-2-, Речь о том, что параметров по умолчанию для любых случаев нет, результат работы аналитических функций в определенных условиях теряет смысл и эти условия для разных функций разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2018, 14:00 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
-2-Where rownum без сортировки в подзапросе. Кто-то заставляет полагаться на порядок без указания ордер бы? Не очень понял при чем здесь rownum, вроде про аналитические функции ведем разговор, для last_value сортировка в подзапросе ничего не гарантирует. SYДа ну? Шел бы ты учить матчасть Мы рассматривали вариант с суррогатным первичным ключом для строки выборки, а он вроде как not null, в противном случае ситуация поправима)) Код: plsql 1. SYС точностью до наоборот. last_value(r) over() всегда вернет последнее в порядке возрастания значение r среди всех выбранных значений r. ElicSkilledJuniorlast_value(r) over() - вообще непредсказуемый результат.Воинствующий ламер. Ребята, позвольте с вами не согласиться, помедитируйте на досуге: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 4 Код: plsql 1. 2. 3. 10 Код: plsql 1. 2. 3. 10 Код: plsql 1. 2. 3. 4. 0 Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2018, 14:30 |
|
||
|
last_value странный результат
|
|||
|---|---|---|---|
|
#18+
SkilledJunior параметров по умолчанию для любых случаев нетдефолтные параметры есть. Ламеризм побуждает тебя искать несуществующие изъяны. Просмотрел последние десять тем с применением last_value. Только в одной используется unbounded following. Одинаковые дефолты не только позволяют применять пользовательские и десятки стандартных функций без оглядки в документацию на вариативность, но и оберегают ленивых джуниоров от лишних умолчательных пересортировок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2018, 14:41 |
|
||
|
|

start [/forum/topic.php?fid=52&startmsg=39713193&tid=1883362]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
149ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 503ms |

| 0 / 0 |
