Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
CTE и промежуточные результаты выполнения
|
|||
|---|---|---|---|
|
#18+
Всем привет товарищи! Хочу выразить спасибо тем, кто решил помочь мне в решении данной задачи А именно я пытаюсь разобраться все в том же CTE, я знаю, желание убивать у посвященных людей на этом форуме только увеличивается! )) меня озадачили такой фишкой с CTE, имеется таблица - с индексом и строкой которая "якобы" показывает бинарную последовательность 0 или 1 Код: sql 1. 2. 3. 4. 5. 6. так вот, суть задачи: Провести "инверсию" в строке посимвольно, т.е. следующий символ это инверсия от предыдущего если этот символ равен 1. Если символ равен 0, то копируем предыдущий Например: '1101101' -> первый равен 1 - первая позиция - не трогаем (1) второй 1 - равен инверсией от первого (10) третий 0 - копируем предыдущий (100) 4 - 1 инверсия 3-ого = (1001) 5 - 1 инверсия 4 -ого = (10010) 6 - 0 копируем пред (100100) 7 - 1 инверс 6 ого (1001001) казалось бы вообще фигня я понял как работает CTE http://www.sql.ru/forum/1295380/sql-i-matrica-realno-li-reshit-takuu-zadachu http://www.sql.ru/forum/1295471/i-opyat-vopros-pro-cte пишу вот такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. но тут то уже мой воспаленный мозг понял, что данные берущие из binaries не меняются в CTE. В этом и есть загвоздка, как придумать некий "буфер" и ложить туда данные для выполнения промежуточных операции со строками? или вообще возможно ли такое в принципе? я пробую многократно cross joinить с предусловиями... Но и это мне кажется обречено на позорное фиаско) PS: Решение только при помощи with, select, CTE Или этими средствами можно ли выполнить как то итерацию по строкам c учетом изменении "на лету"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 10:34 |
|
||
|
CTE и промежуточные результаты выполнения
|
|||
|---|---|---|---|
|
#18+
Это нереляционная задача. 1. Разобрать строку бит в столбец бит и порядковый номер. 2. Запросом с LEAD сгенерировать новый столбец бит. 3. Сложить все обратно в бинари. А так-то изложенный алгоритм = Код: vbnet 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 11:40 |
|
||
|
CTE и промежуточные результаты выполнения
|
|||
|---|---|---|---|
|
#18+
пардон, не or, а xor. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 11:42 |
|
||
|
CTE и промежуточные результаты выполнения
|
|||
|---|---|---|---|
|
#18+
aleks222Это нереляционная задача. 1. Разобрать строку бит в столбец бит и порядковый номер. 2. Запросом с LEAD сгенерировать новый столбец бит. 3. Сложить все обратно в бинари. А так-то изложенный алгоритм = Код: vbnet 1. 2. 3. Спасибо! LAG и LEAD, это классная идея! Попробую сейчас.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 11:54 |
|
||
|
CTE и промежуточные результаты выполнения
|
|||
|---|---|---|---|
|
#18+
swd1986, Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 12:05 |
|
||
|
CTE и промежуточные результаты выполнения
|
|||
|---|---|---|---|
|
#18+
invmswd1986, Код: 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. invm, Большущее спасибо! Это как раз та ситуация, когда ученик идет в гору, на вершине которого сидит мастер. Даже не мастер, а учитель. Вообщем то, для учителя выгода получить удовлетворение от безвозмездно переданных знании ученику. А ученик, знания которого в руках, дает учителю признание. Ну и осознание ученику, какой же он "д****б" )) я честно ждал такого запроса, правильнее было мучиться, париться, но добиться своего или потерпеть фи.sql.аско. А тут и разобрать код, и понять как работает, и главное - сэкономленное время. На блюдечке в голубой каемочке... Еще раз спасибо invm и сайту) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 12:31 |
|
||
|
CTE и промежуточные результаты выполнения
|
|||
|---|---|---|---|
|
#18+
invmswd1986, Код: 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. Очень забавно городить целый case для банального xor. Ваще то, если напрячь фантазию: Код: vbnet 1. 2. 3. 4. 5. 6. и задача становится почти реляционной, т.е. новое значение бита может быть рассчитано исключительно из текущих значений бит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 12:37 |
|
||
|
CTE и промежуточные результаты выполнения
|
|||
|---|---|---|---|
|
#18+
aleks222 invmswd1986, Код: 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. Очень забавно городить целый case для банального xor. Ваще то, если напрячь фантазию: Код: vbnet 1. 2. 3. 4. 5. 6. и задача становится почти реляционной, т.е. новое значение бита может быть рассчитано исключительно из текущих значений бит. Спасибо! Но invm показал запрос, который может применяться не только к битовым значениям. Это первое, второе - это как раз таки тот случай "как меняются данные на лету" средствами CTE (один из вариантов решения)... Порой мне кажется человек, который дал мне задачу и invm - это один и тот же чел ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 12:44 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39659402&tid=1689595]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 357ms |

| 0 / 0 |
