|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
Доброго времени суток, друзья! Постигаю основы sql, пытаюсь разобраться с комплексными группировками, но пока что не выходит каменный цветок=не варит мой старый котелок :) Буду благодарен за помощь со следующей задачей: Сгруппировать в выборке из таб1 те значения столбца a, для которых совпадает кол-во строк, а также соответствующие значения столбцов b, c и d равны между собой. Исходная таблица: Результат: По логике понимаю, что вероятно надо сделать последовательный построковый перебор со сравнением значений, но как это уложить в sql скрипт - для меня загадка ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2020, 16:27 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
Tom333, если строк в группе не много (поместится в varchar2) то группа list_aag зи лень набивать данные ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2020, 16:37 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
Stax, спасибо! У меня была вторая идея склеить их в одно, а потом сравнивать полученные значения, в varchar2 поместится с головой. Но не могу сообразить как сделать чтобы сначала выстроить по алфавиту, потом склеить, а потом выполнить сравнение. Потому что если склеить AT1+AS2+AH3, а в другом случае AS2+AT1+AH3, то результат сравнения будет не удовлетворительный. Неудобно просить, но буду благодарен если найдете время накидать основу скрипта. Сейчас пробую сам наваять, но пока выходит не очень :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2020, 17: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.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2020, 17:08 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#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.
Что-то типа: Код: 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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2020, 17:38 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
тупо слепить все в кучу и отранжировать Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2020, 17:47 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
SY, спасибо. в логиках я слабоват. От того sql-ем не владею. с Exist-ом и без collect-а всякий сможет... :) а так тоже магия? Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2020, 17:51 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
Выкинуть full outer - он тут совсем не нужен. Допилить проверкой числа строк в поле а после GROUP BY с числом строк в поле а Код: 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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2020, 17:57 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
booby а так тоже магия? Тоже магия: Код: 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.
Я уже показал как допилить твое решение. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2020, 18:08 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
Tom333, основа c listaag Код: 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.
ps можно listaag и раздельно для каждого поля pss много вариантов накидали, мож они и луче, я внимательно не смотрел .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2020, 18:35 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
Stax можно listaag и раздельно для каждого поля Можн listagg от Код: plsql 1.
Так больше поместится :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2020, 19:15 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
SY Я уже показал как допилить твое решение. SY. да, спасибо. мне казалось, что должно быть достаточно двух группировок, а получается три. (2 + дистинкт) вот еще один три-вариант. вроде похож на правду: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 00:53 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
booby, нашлась пропажа в две группировки: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 01:32 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
booby, как определить кто с кем в паре(группе)? Код: 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.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 10:04 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 10:37 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
Stax, Staxкак определить кто с кем в паре(группе)? необходимый вывод определен в первом посте. Ты формулируешь другую задачу. для неё надо превратить полусоединение (exist) в явное соединение, например боковое (lateral) и брать пары из того join-а, который в exist ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 12:23 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
booby Stax, Staxкак определить кто с кем в паре(группе)? необходимый вывод определен в первом посте. Ты формулируешь другую задачу. и брать пары из того join-а, который в exist імхо нет не "формулируешь другую задачу" первом посте цвет - ето группа ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 12:41 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
Stax booby Stax, пропущено... необходимый вывод определен в первом посте. Ты формулируешь другую задачу. и брать пары из того join-а, который в exist імхо нет не "формулируешь другую задачу" первом посте цвет - ето группа ..... stax надо подумать, как номер признака связности добавить. но не сегодня - я уже весть в коньяке, пиве и шампанском (входим в длинные праздники). Пока кажется, что его надо на union-е от соединения строить, как точно - пока не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 13:45 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
booby надо подумать, как номер признака связности добавить. но не сегодня - я уже весть в коньяке, пиве и шампанском (входим в длинные праздники). Пока кажется, что его надо на union-е от соединения строить, как точно - пока не знаю. 99% на форуме такую задачу уже решали (лень искать) ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 14:02 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
andrey_anonymous Stax можно listaag и раздельно для каждого поля Можн listagg от Код: plsql 1.
Так больше поместится :) еще один простенький вариант без ограничения на кол-во Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 14:40 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
Ох, ничего себе понаписали пока меня не было :) Maxim Demenko, SY, booby, Stax, andrey_anonymous, Dshedoo, спасибо большое за советы! Вчера по совету Stax засел разбираться с LISTAGG WITHIN GROUP и в итоге с использованием конкатенации наваял нечто похожее на то, что предложил Максим только без вывода строк, у которых не нашлось дубликатов. C union идею тоже понял, спасибо, но не способен пока поместить её в котелок и осознать логику :) Всех с Наступающим, кстати, и отличных выходных! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 14:40 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
xtender, как понять кто в какой группе? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
22083974 надо "раскрасить" 1,3 желтые, 4,6 синие і тд ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 15:01 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
Stax, Ну это же элементарно. Взгляни на запрос - надо лишь убрать unpivot и все станет ясно ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 15:15 |
|
Комплексная группировка значений
|
|||
---|---|---|---|
#18+
xtender Stax, Ну это же элементарно. Взгляни на запрос - надо лишь убрать unpivot и все станет ясно оно то ясно, но не совсем наглядно Код: 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.
зи решение красивое ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2020, 15:48 |
|
|
start [/forum/topic.php?fid=52&msg=39929530&tid=1881530]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 154ms |
0 / 0 |