|
|
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
Коллеги, помогите дилетанту правильно записать подобную конструкцию: GROUP BY obv.numopzn, obv.dateizm HAVING FIRST ORDER BY obv.numopzn, obv.dateizm DESC; С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2016, 22:34 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
ВМоисеев, и что же должен делать HAVING FIRST? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2016, 23:44 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
ВМоисеевКоллеги, помогите дилетанту правильно записать подобную конструкцию: GROUP BY obv.numopzn, obv.dateizm HAVING FIRST ORDER BY obv.numopzn, obv.dateizm DESC; Если я правильно понял, то на 12с это будет Код: plsql 1. 2. 3. На версиях постарше Код: plsql 1. 2. 3. 4. 5. или Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 00:11 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
>что это, вчера, 23:44 [19945086] > ... что же должен делать ... Есть некоторое множество объектов. Каждый объект характеризуется своим состоянием. В некоторые случайные моменты времени состояние объекта меняется и фиксируется до следующего изменения. Клиент хочет знать состояние объектов на определенное время (дату). С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 02:09 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
ВМоисеевКлиент хочет знать состояние объектов на определенное время (дату). Код: plsql 1. 2. 3. 4. 5. 6. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 02:44 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
Или через аналитику: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 03:18 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
>SY, сегодня, 02:44 [19945338] >select object_id ... Да, каждый объект имеет: object_id, object_name, object_p1, ... object_pn, object_date. Я работаю с PLSQL Developer, и здесь Ваша конструкция GROUP BY object_id, только с одним object_id даёт ошибку. И не понятно, для чего max(state)? Зачем? С уважением, Владимир ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 03:21 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
>SY,сегодня, 03:18 [19945346] >Или через аналитику: Огромное спасибо и многие лета Вам. То что надо. С уважением, Владимир ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 03:36 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
>SY, сегодня, 03:18 [19945346] >Или через аналитику: Рано радовался. Не могу встроить эту конструкцию в процедуру пакета. Не подскажете ? В SQL окне выполняется штатно. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 04:10 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
ВМоисеевНе могу встроить эту конструкцию в процедуру пакета. Bерсия? Ну и код в студию. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 04:27 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
ВМоисеевИ не понятно, для чего max(state)? Зачем? Код: plsql 1. Сортируем по state_date (order by). Присваиваем ранг (dense_rank). Берем наибольший ранг (last). Но ведь строк с наибольшим рангом может быть несколько и с разными state. Вот для этого и нужна агрегирующая функция - в данном случае я выбрал max. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 04:36 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
>SY, сегодня, 04:27 [19945362] >Bерсия? Oracle 8. Как отдельный SELECT проходит, ошибка при встраивании в процедуру пакета на строке row_number() после over. SELECT * FROM( SELECT row_number() over(partition by obv.numopzn order by obv.dateizm desc) rn , obv.numopzn numopzn . . . ) WHERE rn=1; С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 04:50 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
ВМоисеевOracle 8.Соболезнуем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 07:57 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
Ну, row_number - то уже работал, просто любая аналитика в EXECUTE IMMEDIATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 08:04 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Если мне не изменяет память, то аналитика появилась во втором релизе восьмерки. так что не факт что динамика спасёт автора....)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 10:48 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
Спасет-спасет, раз у него за пределами PL/SQL выполняется Старые грабли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 10:53 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Да, пропустил про "штатно". Зато вспомнил как обходились без аналитики через pl/sql) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 11:33 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
>Вячеслав Любомудров, 29 ноя 16, 10:53 [19946097] >Спасет-спасет... Точно - спасло. Огромное спасибо. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2016, 02:37 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
>Вячеслав Любомудров, 29 ноя 16, 10:53 [19946097] >Спасет-спасет... Увы, на объекте промышленности не спасло. Не работают аналитические функции. Но задача показа состояния объектов базы данных должна быть решена. Вопрос, как очистить временную таблицу? С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2016, 01:04 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
ВМоисеевВопрос, как очистить временную таблицу? Какую временную таблицу? Ты думаешь этот тип задач до аналитики не существовал? Очень даже существовал. И ничего, крутились и бeз аналитики: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. А эффективней всего "бабушкиным методом": Код: plsql 1. 2. 3. 4. 5. 6. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2016, 03:01 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
>SY, сегодня, 03:01 [19987267] >Ты думаешь этот тип задач до аналитики не существовал? Извините, я об этом даже не думал. Есть задача, её надо решить. >А эффективней всего "бабушкиным методом": ... Это не решение задачи. Состояние объекта определяется несколькими параметрами. И вариант MAX() или с другими аналогичными функциями по отдельным параметрам состояния не катит. Нужна FIRST(), но её нет. Вот моё решение: Код: 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. 32. 33. 34. 35. 36. где tbl_tmp_gis есть: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Эта конструкция работает на тесте в два раза быстрее, чем с аналитической функцией row_number(). С уважением, Владимир ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2016, 13:34 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
ВМоисеев>SY, сегодня, 03:01 [19987267] >Ты думаешь этот тип задач до аналитики не существовал? Извините, я об этом даже не думал. Есть задача, её надо решить. >А эффективней всего "бабушкиным методом": ... Это не решение задачи. Состояние объекта определяется несколькими параметрами. И вариант MAX() или с другими аналогичными функциями по отдельным параметрам состояния не катит. Нужна FIRST(), но её нет. Вот моё решение: Код: 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. 32. 33. 34. 35. 36. где tbl_tmp_gis есть: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Эта конструкция работает на тесте в два раза быстрее, чем с аналитической функцией row_number(). С уважением, Владимир не понял если все ето в pl/sql то GROUP BY obv.numopzn, obv.dateizm /*HAVING FIRST*/ ORDER BY obv.numopzn, obv.dateizm DESC фетчим первые и exit ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2016, 14:13 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
>stax.., сегодня, 14:13 [19987828] > ... если все ето в pl/sql ... Да. Это всё в pl/sql. Если Вас не затруднит, разверните вашу схему решения в текст на pl/sql. Когда меня приперли к стенке на объекте, я примерно так и поступил: . . . Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. отправив все строки огромной выборки на клиента. Там нет проблем выбрать первую строку из каждой группы. Схема работает, но сами понимаете ... С уважением, Владимир ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2016, 15:36 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
ВМоисеев>что это, вчера, 23:44 [19945086] > ... что же должен делать ... Есть некоторое множество объектов. Каждый объект характеризуется своим состоянием. В некоторые случайные моменты времени состояние объекта меняется и фиксируется до следующего изменения. Клиент хочет знать состояние объектов на определенное время (дату). С уважением, Владимир. давайте вернемся к исходному чем Вас не устраивает решение SY? ето обычная задачка, я называю ее курс на дату по разному можно where (id,dat) in (select id,max(dat) from t where dat<='dd' ... group by id) или с кореляцией і тд непонятно что не подходит зи желательно чтоб был индекс по id (в ідеале id,dat) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2016, 16:09 |
|
||
|
Oracle having first
|
|||
|---|---|---|---|
|
#18+
ВМоисеевНужна FIRST(), но её нет. Давай определяться. Задача была опмсана так: ВМоисеевЕсть некоторое множество объектов. Каждый объект характеризуется своим состоянием. В некоторые случайные моменты времени состояние объекта меняется и фиксируется до следующего изменения. Клиент хочет знать состояние объектов на определенное время (дату). Затем рабочee для > Oracle 8 решение: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. которое нужно воплотить в Oracle 8. Теперь: ВМоисеев>А эффективней всего "бабушкиным методом": ... Это не решение задачи. Состояние объекта определяется несколькими параметрами. И вариант MAX() или с другими аналогичными функциями по отдельным параметрам состояния не катит. Нужна FIRST(), но её нет. Втыкаем "бабушкин метод": Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Например данные о последнем на 31 Декабря 1997 принятом сотруднике по отделам: Код: 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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2016, 16:11 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39356517&tid=1886843]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 483ms |

| 0 / 0 |
