|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
Добрый день. У меня есть таблица с двумя атрибутами: Текс1 и Текс2 В ней N строк, Текс1 всегда меньше Текс2. Например: Код: 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.
Мне необходимо разбить тексты на группы - заполнить значение gr. В примере gr заполнено вручную. Под группой подразумевается конечная цепочка текстов, надеюсь из примера понятно. Предполагаю, что алгоритм должен выглядеть как рекурсивный запрос в рекурсивном запросе. Первый запрос увеличивает номер группы, второй запрос проставляет группу парам текстов. Видимо за начало надо брать минимальный из текстов. Помогите пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 11:20 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
Текс1 и Текс2 вместе уникальны. Oracle 12. Желателен SQL, не PL/SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 11:36 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
ZiB, Я что-то по примеру не очень хорошо понимаю каким образом формируется группа ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 13:30 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
Берется минимальный текст и присваивается ему группа 0. Все тексты в паре с этим текстом то же попадают в группу 0, а так же все тексты с ними и т.д. Из оставшихся, не попавших ни в одну группу, опять берется минимальный текст и формируется группа 1 и т.д. Вот так получилось: Код: 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.
Однако при увеличении данных время выполнения запроса увеличивается экспоненциально. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 13:38 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
ZiBЖелателен SQL, не PL/SQL Критерий сортировки где? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 13:42 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
andrey_anonymous, не понимаю что за критерий сортировки ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 13:59 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
ZiB, Попытаюсь переформулировать задачу в терминах графов: Дано: имеется неориентированный граф, заданный множеством ребер (концы ребер соответственно являются вершинами) Надо: разбить граф на множество несвязанных подграфов (группы). Изолированных вершин в графе быть не может, поскольку граф задан множеством ребер Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 15:36 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
Да ну, все так! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 15:42 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
Еще нашел один вариант решения, однако так же при увеличении данных время выполнения запроса увеличивается экспоненциально. Код: 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. 51. 52. 53.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 16:43 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
ZiB, Connected components: Weighted quick-union algorithm http://orasql.org/2017/09/29/connected-components/ ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 18:19 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
ZiBЕще нашел один вариант решения, ... не то: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
TEXT1TEXT2GRGR2BC1ACD1CAC1AAB1A ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 18:19 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
ZiB, раз уж у тебя оракл 12: Код: 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. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 02:00 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#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. 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. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 02:03 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#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. 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. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2020, 14:58 |
|
Разбить пары на группы
|
|||
---|---|---|---|
#18+
ZiB, не вглядывался, но 1. что-то у тебя не работает на таком тесте: Код: plsql 1. 2. 3. 4.
2. плюс в SQL все та же проблема: ZiB однако так же при увеличении данных время выполнения запроса увеличивается экспоненциально. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2020, 15:22 |
|
|
start [/forum/topic.php?fid=52&msg=39991987&tid=1880946]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
74ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 329ms |
total: | 511ms |
0 / 0 |