|
Интервалы дат
|
|||
---|---|---|---|
#18+
Добрый день! Есть таблица вида num|date 1|10.02.2020 1|11.02.2020 2|11.02.2020 3|11.02.2020 3|12.02.2020 3|13.02.2020 Необходимо разбить на интервалы дат в формат num|start_date|end_date 1|10.02.2020|11.02.2020 2|11.02.2020|11.02.2020 3|11.02.2020|13.02.2020 Подскажите пожалуйста как это можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 20:43 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
Что-то такое Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 21:33 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
kuvshinka_irka Добрый день! Есть таблица вида num|date 1|10.02.2020 1|11.02.2020 2|11.02.2020 3|11.02.2020 3|12.02.2020 3|13.02.2020 Необходимо разбить на интервалы дат в формат num|start_date|end_date 1|10.02.2020|11.02.2020 2|11.02.2020|11.02.2020 3|11.02.2020|13.02.2020 Подскажите пожалуйста как это можно сделать? чтобы выбрать из таблицы минимальные и максимальные значения с одинаковом ID можно воспользоваться Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 23:09 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
OoCc, Могут быть разрывные периоды, в этом сложность, например для num=3 num|date 1|10.02.2020 1|11.02.2020 2|11.02.2020 3|11.02.2020 3|12.02.2020 3|13.02.2020 3|22.02.2020 должно быть num|start_date|end_date 1|10.02.2020|11.02.2020 2|11.02.2020|11.02.2020 3|11.02.2020|13.02.2020 3|22.02.2020|22.02.2020 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 09:52 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
kuvshinka_irka, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
numstart_dateend_date110.02.202011.02.2020211.02.202011.02.2020311.02.202013.02.2020322.02.202022.02.2020 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 10:15 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
kuvshinka_irka OoCc, Могут быть разрывные периоды, в этом сложность, например для num=3 num|date 1|10.02.2020 1|11.02.2020 2|11.02.2020 3|11.02.2020 3|12.02.2020 3|13.02.2020 3|22.02.2020 должно быть num|start_date|end_date 1|10.02.2020|11.02.2020 2|11.02.2020|11.02.2020 3|11.02.2020|13.02.2020 3|22.02.2020|22.02.2020 это две разные задачки, сначала нужно решить задачку разбивки на правильные интервалы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 10:21 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
kuvshinka_irka Добрый день! Есть таблица вида num|date 1|10.02.2020 1|11.02.2020 2|11.02.2020 3|11.02.2020 3|12.02.2020 3|13.02.2020 Необходимо разбить на интервалы дат в формат num|start_date|end_date 1|10.02.2020|11.02.2020 2|11.02.2020|11.02.2020 3|11.02.2020|13.02.2020 Подскажите пожалуйста как это можно сделать? Запрос в два этапа. На первом этапе - with - к вашей таблице формируете третий столбец, чтобы на выходе получить примерно такое: num|date|Признак 1|10.02.2020|1 1|11.02.2020|1 1|10.02.2020|2 1|11.02.2020|2 2|11.02.2020|1 3|11.02.2020|1 3|12.02.2020|1 3|13.02.2020|2 3|14.02.2020|2 На втором этапе соединяете две копии результата по num и Признак ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 11:44 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
idminmax 1 10.02.2020 11.02.2020 2 11.02.2020 11.02.2020 3 11.02.2020 22.02.2020 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 13:53 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
Guzya Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
idminmax 1 10.02.2020 11.02.2020 2 11.02.2020 11.02.2020 3 11.02.2020 22.02.2020 а чем "это всё" отличается от обычного Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
? пс то, что это (результат) не по ТЗ, даже не берем во внимание ... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 22:11 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
[quot court#22190595] Guzya [поскипано] пс то, что это (результат) не по ТЗ, даже не берем во внимание ... Надо сказать что твой тоже с ошибкой. попробуй на моем наборе. Код: 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.
id begin_interval end_interval110.02.202011.02.2020112.02.202012.02.2020213.02.202013.02.2020313.02.202014.02.2020315.02.202022.02.2020326.02.202026.02.2020 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 00:12 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
Guzya пс то, что это (результат) не по ТЗ, даже не берем во внимание ... Почему не по тз, как я понял на каждый id\num один интервал с мин, макс датами. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 09:31 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
Guzya Guzya пс то, что это (результат) не по ТЗ, даже не берем во внимание ... Почему не по тз, как я понял на каждый id\num один интервал с мин, макс датами. прочтите 3тье сообщение в треде )) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 09:46 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
Maxim Boguk Guzya пропущено... Почему не по тз, как я понял на каждый id\num один интервал с мин, макс датами. прочтите 3тье сообщение в треде )) теперь вижу )) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 10:52 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
OoCc Надо сказать что твой тоже с ошибкой. попробуй на моем наборе. чойта ? Код: 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.
numstart_dateend_date110.02.202012.02.2020213.02.202013.02.2020313.02.202015.02.2020322.02.202022.02.2020326.02.202026.02.2020 имхо, ты не совсем правильно понял задачу ТС Ей нужно получить непрерывные интервалы. Т.е. все записи "дней", для которых есть "последующий день" объединить в один интервал, - одну запись "начало интервала - конец интервала". Это частный случай задачи "объединение интервалов" (когда задаются интервалы (пересекающиеся/не пересекающиеся/вложенные/стыкующиеся), и их нужно объединить в непрерывные). Тут - 12567851 красивый пример Код: 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. 46. 47. 48. 49. 50.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2020, 11:58 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
court, Вопрос, а насколько всё это целесообразно, и почему бы не решать такие задачи императивно? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2020, 12:31 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
crutchmaster court, Вопрос, а насколько всё это целесообразно, и почему бы не решать такие задачи императивно? Ответ просто - производительность sql лем часто это получается сильно быстрее чем на pl/pgsql и тем более чем выкачивание всех данных на клиента и там разбор (данных то может быть очень много)... ps: я бы все эти exists бы переделал на window functions (lag/lead) оно было бы сильно эффективнее и требовало бы 1 прохода по таблице. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2020, 12:34 |
|
Интервалы дат
|
|||
---|---|---|---|
#18+
court, Да, неправильно понял, в свое оправдание могу сказать что я об этом написал выше. crutchmastercourt, Вопрос, а насколько всё это целесообразно, и почему бы не решать такие задачи императивно? сдается мне что это надуманная задачка ради задачки. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2020, 13:40 |
|
|
start [/forum/topic.php?fid=53&fpage=23&tid=1994488]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 280ms |
total: | 419ms |
0 / 0 |