|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Это очередная вариация на тему интервалов. Мне подобное на форуме не попадалось, но сорри если баян. Есть интервалы двух цветов и требуется получить результирующую разбивку как показано ниже. Код: 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. 37.
Входные интервалы каждого отдельного цвета не пересекаются и не соприкасаются. Картинка вероятно нагляднее покажет как получен результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 14:42 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег, Верхняя и нижняя граница всегда определены имеющимися интервалами? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 15:09 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
env, Не совсем понял вопрос. На выходе должен быть диапазон от начала первого до конца последнего. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 15:21 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег, Напрашивается решение через непрерывный список от min до max и start of group, но это видимо слишком простое и очевидное. Код: 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 15:51 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег, red =1 black=2 суммируем с перекрытием 3-overlap 0-прозрачный ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 15:56 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
model + overlap ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 15:58 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег если баян ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 16:00 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кстати, насколько помню была какая-то не[полностью]документированная функция типа именно overlap для работы с датами и числами Или только датами/диапазонами(?) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 16:01 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Stax Кобанчег, red =1 black=2 суммируем с перекрытием 3-overlap 0-прозрачный зі нашел https://www.sql.ru/forum/1297132/razdelit-na-neperesekaushhiesya-intervaly-dat-otrezki-s-ssumirovaniem-summy-v-peresecheniyah ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 16:08 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
env Кобанчег, Напрашивается решение через непрерывный список от min до max и start of group, но это видимо слишком простое и очевидное. Код: 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86.
Интервалы могут быть произвольной длины и не обязательно с целыми границами. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 16:19 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Stax Stax Кобанчег, red =1 black=2 суммируем с перекрытием 3-overlap 0-прозрачный зі нашел https://www.sql.ru/forum/1297132/razdelit-na-neperesekaushhiesya-intervaly-dat-otrezki-s-ssumirovaniem-summy-v-peresecheniyah ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 16:23 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Elic Кобанчег если баян Но некоторая баянистость просматривается, да. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 16:25 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров model + overlap ? Вячеслав Любомудров Кстати, насколько помню была какая-то не[полностью]документированная функция типа именно overlap для работы с датами и числами Или только датами/диапазонами(?) Но недокументированное это неспортивно (и для данной задачи нет надобности). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 16:29 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег Наиболее эффективно без джойнов. Но некоторая баянистость просматривается, да. unpivot можно? для union all select 7, 10, 'red' from dual union all select 10, 14, 'black' from dual 10 10 overlap? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 16:36 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Stax unpivot можно? Stax 10 10 overlap? PS. На самом деле мне стоило состряпать более адекватный пример с real numbers (тогда бы 10 10 было касание а не перекрытие на единицу) но уже есть как есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 16:43 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег завязано на натуральные числа ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 16:47 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег, была идейка red full outer join black on пересекаются но плюнул перебирать случаи пересечений ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 12:11 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Stax Кобанчег, red =1 black=2 суммируем с перекрытием 3-overlap 0-прозрачный ..... stax Суммировать хорошая идея, правда как без трансформации запроса это делать я не знаю. Вижу примерно следующий алгоритм, x1 и x2 в один столбец, каждый признак (red, black) отдельным столбцом, для начала периода (x1) признаку +1, там где кончается период (x2) признаку -1, если накопительная сумма с учетом периода больше нуля значит признак в периоде (в вертикальном виде, период это две ближайшие строки) включен, если нет значит выключен, потом преобразовать обратно в периоды. PS: реализовывать лень))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 12:41 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Stax Кобанчег, была идейка red full outer join black on пересекаются но плюнул перебирать случаи пересечений ..... stax Более просто и эффективно развернуть все отрезки в один ряд (cross join/pivot) и определить что есть что в результате (аналитика/pattern matching). В общем мое решение выглядит так Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
touch используется для фильтра когда конец одного соприкасается с началом другого, а same_bound для исключения из результата первой из точек когда начала либо концы совпадают. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 15:38 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
В общем эта была разминка, теперь предлагается задачка посложнее. Необходимо наложить интервалы из источника на приемник с приоритетом из источника (если есть пересечение). Код: 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.
Здесь не удастся выкрутиться с decode + sum ибо цветов потенциально неограниченное множество. И снова картинка для наглядности. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 16:06 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
graycode PS: реализовывать лень))) https://www.sql.ru/forum/1297132/razdelit-na-neperesekaushhiesya-intervaly-dat-otrezki-s-ssumirovaniem-summy-v-peresecheniyah ета задачка даж проще, токо одно пересечение ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 16:17 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
del ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 19:53 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег В общем мое решение выглядит так Это называется без тяжелой артиллерии? Я думал без тяжелой артиллерии выглядит примерно так: Код: 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. 37.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 00:53 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Одно из решений. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 01:01 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег Здесь не удастся выкрутиться с decode + sum ибо цветов потенциально неограниченное множество. не так изящно конечно и наверное можно упростить, но выкрутиться можно)) Код: 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. 37. 38. 39. 40. 41. 42. 43.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 01:04 |
|
|
start [/forum/topic.php?fid=52&msg=40017949&tid=1880676]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 187ms |
0 / 0 |