Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
Всем привет товарищи! У меня вопрос по одной задачке: Имеется таблица: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Из нее нужно получить таблицу вида 1 2 3 4 5 6 2 2 0 1 0 1 3 1 3 1 0 1 4 1 0 4 0 1 5 1 0 1 5 1 6 1 0 1 0 6 То есть, из таблицы sq превратить в квадрат, где число строк и колонок равно max(sq(n)) При этом в месте пересечения строки и столбца ячейка равна строке/столбу (диагональ) А остальные ячейки – если колонка четная, то 0. Не четная 1. Оттуда возникает вопрос, как можно хотя бы таблицу разбить на квадрат, размерностью в число строк? При этом использовать только select, with (cte) PS: Отображение таблицы не важно, колонки можно заменить в виде строки Спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 11:12 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
swd1986, если число строк в sq - величина переменная, то реализовать можно исключительно при помощи динамического SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 11:23 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
Щукина Аннаswd1986, если число строк в sq - величина переменная, то реализовать можно исключительно при помощи динамического SQL. А в случае если величина фиксированная? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 11:32 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
swd1986, тогда задача - элементарная... cross join + pivot. если с PIVOT-ом сложности - то его аналоги на CASE + GROUP BY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 11:35 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 11:49 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 11:49 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
swd1986А в случае если величина фиксированная?Один из возможных вариантов решения "в лоб" в этом случае: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Из оптимизации видится следующее - преобразовать столбец в строку, размножить нужно число раз. Посчитать пересечения и колонки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 11:53 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#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. Чуть допиленный ваш вариант: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 12:01 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, TaPaK , invm , Благодарю Вас товарищи! Низкий поклон! ) Уточнил задачку, все таки речь идет о динамической таблице, их может быть элементов 6, 9, 100 и т.д. Поэтому в задаче была пометка, что можно отобразить в виде строк без колонок. Так как я если сгенерирую "программно" колонки, я не могу к ним обратиться по имени или по индексу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 12:20 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
swd1986Щукина Анна, TaPaK , invm , Благодарю Вас товарищи! Низкий поклон! ) Уточнил задачку, все таки речь идет о динамической таблице, их может быть элементов 6, 9, 100 и т.д. Поэтому в задаче была пометка, что можно отобразить в виде строк без колонок. Так как я если сгенерирую "программно" колонки, я не могу к ним обратиться по имени или по индексу и что не так с вариантом через xml? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 12:28 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, Т.е. если оперировать строками, то я думаю образно так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. В результате будет строка 0 1 0 2 00 3 000 4 0000 5 00000 6 000000 И далее, построчно вычислить необходимые значения PATINDEX или другим способом. А как это сделать - вот сейчас думаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 12:28 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
TaPaKswd1986Щукина Анна, TaPaK , invm , Благодарю Вас товарищи! Низкий поклон! ) Уточнил задачку, все таки речь идет о динамической таблице, их может быть элементов 6, 9, 100 и т.д. Поэтому в задаче была пометка, что можно отобразить в виде строк без колонок. Так как я если сгенерирую "программно" колонки, я не могу к ним обратиться по имени или по индексу и что не так с вариантом через xml? TaPaK , Спасибо! Я просто еще не до конца понял логику работы xml (или даже не знаю). Как раз читаю справочник на эту тему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 12:34 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 12:35 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
TaPaK , вы супер! Респект и уважуха! Динамически таблицу я получил, осталось разобраться с чет / не чет колонки и что не так с вариантом через xml? Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 12:38 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
swd1986, хорошо что это собеседование не к нам :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 12:40 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
TaPaKswd1986, хорошо что это собеседование не к нам :) :) Еще раз всем спасибо большое! Тапак! Код: plaintext Итоговый вариант: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 13:19 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 13:22 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
TaPaKswd1986, если смотреть на ваш пример, то вот 21475552 уже давно Ахах, да просто в кучу сообщения упали, я толком не разобрался по коду ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 13:25 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
swd1986, Решать такую задачу лучше в OLAP (SSAS, MDX) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 15:03 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
a_voronin, Спасибо, читал, как из способов отчетов, но условие было "При этом использовать только select, with (cte)" Или я еще не понимаю, что вы имели ввиду через Report, cube... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 06:34 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
swd1986a_voronin, Спасибо, читал, как из способов отчетов, но условие было "При этом использовать только select, with (cte)" Или я еще не понимаю, что вы имели ввиду через Report, cube... select, with (cte) есть в MDX и да можно сделать отчет от куба ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 18:02 |
|
||
|
SQL и "матрица"? Реально ли решить такую задачу?
|
|||
|---|---|---|---|
|
#18+
a_voroninswd1986a_voronin, Спасибо, читал, как из способов отчетов, но условие было "При этом использовать только select, with (cte)" Или я еще не понимаю, что вы имели ввиду через Report, cube... select, with (cte) есть в MDX и да можно сделать отчет от куба не ясно почему до сих пор никто EXCEL не предложил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 18:03 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39657449&tid=1689603]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 257ms |
| total: | 439ms |

| 0 / 0 |
