Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть таблица с единственным столбцом Код: plaintext 1. 2. 3. 4. Нужно получить набор данных со всеми возможными комбинациями и номером набора, то есть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 12:06 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
И какой в этом смысл, если все они абсолютно идентичны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 12:42 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
Leo Лапыч, фулл джоин саму на себя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 12:50 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
AkinaИ какой в этом смысл, если все они абсолютно идентичны? тут нужны наводящие вопросы ) Leo Лапыч, а чем у вас набор записей с index = 1 отличается от набора с index = 2? кроме самого index ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 12:59 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
Leo Лапыч, cross join на количество вариантов в степен длинны, в вашем случае это 3^3 и убрать дубли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 13:01 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
ShakillAkinaИ какой в этом смысл, если все они абсолютно идентичны? тут нужны наводящие вопросы ) Leo Лапыч, а чем у вас набор записей с index = 1 отличается от набора с index = 2? кроме самого index Ikshall понимает, о чём говорит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 13:03 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
Leo Лапыч, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 13:08 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы! AkinaИ какой в этом смысл, если все они абсолютно идентичны?Shakillтут нужны наводящие вопросы ) Leo Лапыч, а чем у вас набор записей с index = 1 отличается от набора с index = 2? кроме самого indexTaPaKIkshall понимает, о чём говорит Суть именно в порядке их следования в результирующей выборке. Можно добавить ещё один столбец для наглядности: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Ну и для решения задачи считать, что результирующий набор данных выведен в Код: sql 1. . StarikNavyLeo Лапыч, фулл джоин саму на себя? Ну если Вы получите таким образом результирующий набор данных, то прошу пример... Я лично не смог вообразить себе соединение, которое бы его дало. TaPaKcross join на количество вариантов в степен длинны, в вашем случае это 3^3 и убрать дублиMinamoto Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Задачу нужно решить в общем виде, так как количество строк исходного набора данных может варьироваться от 1 до... скажем, 7. Распределение показательное, т.е. 1 выстреливает очень часто, а 7 - крайне редко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 13:32 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
Leo ЛапычЗадачу нужно решить в общем виде, так как количество строк исходного набора данных может варьироваться от 1 до... скажем, 7. Распределение показательное, т.е. 1 выстреливает очень часто, а 7 - крайне редко. Пока умного общего вида не придумал, могу пока предложить тупой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 13:58 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
MinamotoПока умного общего вида не придумал, могу пока предложить тупой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Спасибо за вариант в лоб. Если ещё дополните свой пример тем, как это привести к требуемой структуре выходных данных (индекс набора, индекс значения внутри набора, значение), то я с удовольствием возьму на вооружение, как временный вариант. Но хотелось бы всё же увидеть мощь CTE в действии. Что-то мне подсказывает, что с помощью них можно построить подобную результирующую выборку, ведь по сути - это рекурсия, только не по дереву, а по графу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 14:33 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
iap Кол-во возможных комбинаций из n-элементов множества Пример использования CTE увидел, даже выполнил его и попробовал понять что он возвращает. Увидел некое подобие перебора вариантов, попробовал поменять значения констант, Код: sql 1. Код: sql 1. но результаты вызвали лишь больше вопросов. Ну и главное - не смог представить как туда подставить мой исходный набор данных и получить желаемый результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 15:04 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
Leo ЛапычСпасибо за вариант в лоб. Если ещё дополните свой пример тем, как это привести к требуемой структуре выходных данных (индекс набора, индекс значения внутри набора, значение), то я с удовольствием возьму на вооружение, как временный вариант. Это уже скучная часть, но надо уж завершить ) Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 15:09 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
Minamoto , Спасибо! Решение есть. Остаётся ещё надежда на помощь iap с CTE, так как чувствуя я, что его пример по ссылке перебором всё же занимается. Уверен, что на CTE решение должно выглядеть более изящно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 15:26 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 15:31 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
Leo Лапыч , да вроде в CTE должно быть не сильно сложно. Сперва рекурсией добавляем по одному символу в конец, проверяя, что этого символа ещё нет (можно ещё и разделителем озаботиться, чтобы потом проще обратно разделять было). Соответственно рекурсия остановится, когда все символы попадут в поле. Затем отсекаем недоделанные (короткие) строки, оставляя только те, в которых есть все исходные символы, а заодно прилепляем номера будущих наборов. И потом функцией разматываем их вертикально - благо они разматываются в физическом порядке следования в разбираемой строке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 15:36 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
msLex Код: 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. Akina Leo Лапыч , да вроде в CTE должно быть не сильно сложно. Сперва рекурсией добавляем по одному символу в конец, проверяя, что этого символа ещё нет (можно ещё и разделителем озаботиться, чтобы потом проще обратно разделять было). Соответственно рекурсия остановится, когда все символы попадут в поле. Затем отсекаем недоделанные (короткие) строки, оставляя только те, в которых есть все исходные символы, а заодно прилепляем номера будущих наборов. И потом функцией разматываем их вертикально - благо они разматываются в физическом порядке следования в разбираемой строке. Спасибо за рабочий пример! Всё-таки через создание последовательностей и функционал поиска элемента в них. Я думал, что CTE сможет прямо на лету вставлять строки в результирующую выборку, как это происходит при обходе дерева. Ну, по крайней мере, решение с использованием CTE не ограничено количеством строк исходного набора данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 15:52 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
Leo ЛапычЯ думал, что CTE сможет прямо на лету вставлять строки в результирующую выборку, как это происходит при обходе дерева. Так и происходит, и вы получаете ваше решение в виде дерева (я немного поменял скрипт, оставив только само дерево) Код: 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. но вам то нужно не дерево а пути до листовых элементов (группа - это и есть полный путь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 15:59 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
Leo ЛапычНу, по крайней мере, решение с использованием CTE не ограничено количеством строк исходного набора данных.Но это редкостный тормоз, доложу я вам! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 16:47 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
iapLeo ЛапычНу, по крайней мере, решение с использованием CTE не ограничено количеством строк исходного набора данных.Но это редкостный тормоз, доложу я вам!Учитывая, что результативное количество строк - это факториал от исходного - в целом неудивительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 16:55 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
msLex Так и происходит, и вы получаете ваше решение в виде дерева (я немного поменял скрипт, оставив только само дерево) Код: 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. но вам то нужно не дерево а пути до листовых элементов (группа - это и есть полный путь) MinamotoУчитывая, что результативное количество строк - это факториал от исходного - в целом неудивительно.iapНо это редкостный тормоз, доложу я вам!У меня при 7! выполняется одинаково быстро - меньше секунды, что меня вполне устраивает, так как 7 - это крайне редкий случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 17:32 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
если надоест лазить по кактусам то можно воспользоваться встроенными SQL Server средствами предназначенными для таких задач (хотя не у всех они настроены)например так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 19:33 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
vikkivесли надоест лазить по кактусам то можно воспользоваться встроенными SQL Server средствами предназначенными для таких задач (хотя не у всех они настроены)например так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Спасибо, конечно. Но лучше уколоться об кактус, чем голой попой сесть на ежа. Так-то можно было на .NET сделать сборку и зарегистрировать её как хранимую процедуру. А интерес был именно в том, как эта задача решается на Transact-SQL с использованием обобщённых табличных выражений (или без них). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 18:17 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
vikkiv, Хосспади, и это такие реализации решений в этом богоподобном R, так это выглядит? Какой ужас, честно... даже регулярные выражения в PowerShell выглядят теперь совершенно по-детски безобидно рядом с этим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2019, 09:11 |
|
||
|
Снова CTE и комбинаторика
|
|||
|---|---|---|---|
|
#18+
vikkiv, Хосспади, и это такие реализации решений в этом богоподобном R, так это выглядит? Какой ужас, честно... даже регулярные выражения в PowerShell выглядят теперь совершенно по-детски безобидно рядом с этим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2019, 09:11 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39868896&tid=1687218]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 346ms |

| 0 / 0 |
