|
|
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Как объединить пересекающие и соприкасающиеся интервалы в один? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. хочу получить похожее, room_iddrange1[2014-01-01,2014-03-20)1[2014-03-22,2014-03-24)2[2014-02-10,2014-03-20)Поидеи нужно использовать RECURSIVE но ничего не выходит Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 19:07:17 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
SmeL_mdПоидеи нужно использовать RECURSIVE но ничего не выходит по идеи RECURSIVE не нужно использовать. джойните по res_id != res_id и drange && drange, селектите res_id, room_id, drange + drange , ну и пользуемся DISTINCT собственно. может есть вариант по лучше, но этот работать будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 19:31:13 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
SmeL_md, да, может всётаки убрать критерий джойна res_id != res_id и оставить только drange && drange и может room_id = room_id (это уже по задаче как вам нужно), поскольку имея res_id != res_id как критерий можем получить не то что хотели, т.е. небудет единичных случаев в результсете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 20:08:14 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Lonepsycho, так по идеи мы получим одно суммирование, т.е. интервал увеличится на 1 пересечение, а этого не достаточно нужно все что прилегает и пересекается объединить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 20:17:29 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
SmeL_md, а, ну да. забыл что когда такое было нужно писал sum(...) для range type. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 20:37:15 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 22:21:48 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
мой предыдущий вариант ошибается на наборе данных с дополнительной строкой (1, daterange '[2014-01-20, 2014-02-05)') Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 00:20:12 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
SmeL_md, я вот тут в соседней ветке приводил пример решения, даже с картинками. Думаю, в Postgre такой вариант тоже должен сработать... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 05:19:22 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
SmeL_md, на вскидку в лоб переписал свое решение по PostgreSQL . Разбираться с преобразованием кончал/начал в диапазонный тип стало лень, если надо - доделаешь сам... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 07:42:34 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Добрый Э - ЭхSmeL_md, на вскидку в лоб переписал свое решение по PostgreSQL . Разбираться с преобразованием кончал/начал в диапазонный тип стало лень, если надо - доделаешь сам... :) таки открыл на секунду хелп по постгри и сделал так: тынц ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 07:47:28 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 07:54:39 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Спасибо LeXa NalBat и Добрый Э - Эх на всякий случай зазеркалю ответ Добрый Э - Эх Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 12:31:22 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
SmeL_md, мой вариант через cluster может оказаться медленным на большом объеме данных из-за почти декартового self-join, используйте способ от Добрый Э - Эх. обидно, что не додумался до b <= max(e) over(order by b, e rows between unbounded preceding and 1 preceding) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 13:13:49 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Как с помощью запроса объединить диапазоны таблицы (для примера, база содержит сотни записей) ID MIN MAX 77777 1 3 77777 2 4 77777 3 5 77777 4 6 в один общий диапазон ID MIN MAX 77777 1 6 ? Не могу правильно написать запрос SQL. Заранее большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 14:51:09 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Ismanov, Для новых вопросов надо заводить отдельную тему. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 15:22:28 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
vyegorov, IMHO - магия данных. Думаю, твой вариант не решает задачи Ismanov-а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 05:53:59 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 05:55:04 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, не получается, я новичок в sql ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 09:38:38 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Ismanov, Код: sql 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. on-line проверка на sqlfiddle.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 10:33:43 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, Спасибо большое, но выдает ошибку "Ошибка синтаксиса (пропущен оператор) в выражении запроса SUM(sog) OVER(partition by id ORDER BY b,e)" Я пытаюсь сделать это через MS Access 2013 через режим SQL при составлении запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 12:40:56 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
IsmanovЯ пытаюсь сделать это через MS Access 2013 через режим SQL при составлении запроса.и при чем тут форум по Postgre, если ты на Access-e? По нему отдельная ветка на форуме есть. Но и под него решение написать можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 12:44:56 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, понял значит я заблудился ) иду публиковать проблему на access ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 12:47:30 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Ismanov, вам нужен исключительно и только "запрос к серверу" ( Pass-Through query http://support.microsoft.com/kb/303968 -- он и только он пишется в синтаксисе СУБД--сервера) либо же писать запросы в SQL-диалекте самого аксесса [т.н. Jet-SQL] (там оконных ф-й скорее всего нет до сих пор) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 12:50:34 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
лопата, пожалуйста, можно подробно описать как написать этот запрос к серверу или через Jet SQL ? я опубликовал вопрос на ветке Access http://www.sql.ru/forum/1123396-a/obedinit-neskolko-perekryvaushhihsya-diapazonov-v-odin ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 13:12:18 |
|
||
|
daterange && daterange объединить пересекающие и соприкасающиеся интервалы в один
|
|||
|---|---|---|---|
|
#18+
Ismanov, запрос к серверу, если у вас данные - в постгресе, а как -- написано по ссылке. т.ч. не ленимся, улыбаемся и машем. сам запрос написан ээхом выше. а в jet-SQL -- вам там и напишут. или ссылку на более раннее дадут. (я обычно в аксесс руками (в vba) открывал рекордсет, и клеил диапазоны вдоль прохода. это быстрее, чем чистый jet-SQL. вспоминать долго). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 13:23:04 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38789190&tid=1998396]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
171ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 520ms |

| 0 / 0 |
