|
|
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
Никак не могу решить следующую задачу - может кто подскажет? Есть таблица с1 с2 с3 с4 с5 с6 1 1 2 1 3 1 4 1 5 1 6 1 7 Надо сделать группировку по ней по полю с1 что бы в результате вышло с1 с2 с3 с4 с5 с6 1 2 3 4 5 6 1 7 3 4 5 6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 14:35 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
криво написал таблицу таблица такая: с1 с2 с3 с4 с5 с6 1 2 - - - - 1 - 3 - - - 1 - - 4 - - 1 - - - 5 - 1 - - - - 6 1 7 - - - - ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 14:39 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 15:39 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
Ну а если гарантированно у строк с C2 IS NOT NULL поля C3, C4, C5, C6 всегда NULL то упрощаем: Код: 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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 15:45 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
А если у меня все значения c таблице кроме с1 не NUMBER? Как быть тогда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 15:58 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
alexsm73А если у меня все значения c таблице кроме с1 не NUMBER? Как быть тогда? Замени SUM на MAX. Это если у строк с C2 IS NULL только одна где C3 IS NOT NULL, только одна где C4 IS NOT NULL, только одна где C5 IS NOT NULL, только одна где C6 IS NOT NULL. А если несколько, то что ты ожидаешь взад, например C3 = 'X' и C3 = 'Y'. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 16:17 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
Спасибо!То что надо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 16:45 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
И все-таки аналитика - это не совсем агрегация :) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 01:54 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousИ все-таки аналитика - это не совсем агрегация :) Искусство ради искусства :) ? SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 04:06 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Спасибо этот способ подходет больше. Но тут возникает проблема при создании процедуры: При создании курсора на этот селект Oracle ругается ошибкой ORA-30482: DISTINCT option not allowed for this function Можно это обойти как-то? У меня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 10:46 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
alexsm73DISTINCTset() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 10:54 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
alexsm73Спасибо этот способ подход е т больше.Чудо, ты откудова выползло возомнить себя программистом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 11:22 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
Elic, Да учусь пока - поэтому и спрашиваю. Проблема в том что мне надо что бы была группировка по с1 и уникальность по другим столбцам. В этом варианте у меня вышло - но процедуру создать не могу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 13:53 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
alexsm73Спасибо этот способ подходет больше. Сравни: Код: 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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 15:00 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
alexsm73Спасибо этот способ подходет больше. Кстати, если у строк с C2 IS NOT NULL поля C3, C4, C5, C6 всегда NULL (как в твоем примере), то аналитическое решение можно упростить: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 15:14 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
SY, А как сделать что бы все стролбцы групировались по с1? т.е если таблица с1 с2 с3 с4 с5 с6 1 2 - - - - 1 - 3 - - - 1 - - 4 - - 1 - - - 5 - 1 - - - - 6 1 7 - - - - 1 - 8 ---- что выводилось бы 1 2 3 4 5 6 1 7 3 4 5 6 1 7 8 4 5 6 1 2 8 4 5 6 ну и так далее что бы в каждой строке было уникальное значение по всем столбцам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 19:02 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
Никак - порядок строк в таблице просто нe существует. Порядок задается ORDER BY. Посему точто ты хочешь возможно только если в таблице есть поле задающее порядок строк. Например поле ID: Код: 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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 21:46 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
Похоже я непрaвильно понял логику: Код: 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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 22:10 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
SY, Спасибо большое! это как раз и есть то что надо было добиться в результате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 19:37 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
SYПохоже я непрaвильно понял логику: Код: 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. SY. из пушки по воробьям - так и память всю сожрать недолго. сравни планы, убийца )) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 20:01 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
Fogelубийца )) Тренируйтесь, парни: Код: 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. Ваших вариантов на этом наборе чот не дождался (~5мин, дальше лень). Вариант SY сожрал к этому времени порядка 30 гиг в темпе, Fogel - 17 гиг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 20:50 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousВаших вариантов на этом наборе чот не дождался (~5мин, дальше лень). Вариант SY сожрал к этому времени порядка 30 гиг в темпе, Fogel - 17 гиг. Fogel - до финиша не дошел: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. SY побеждает в стиле СУМО, выпихнув Fogel из темпа - но все еще бежит, 37 гиг уже :) :) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 20:59 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
Ан нет - SY тоже дисквалифицирован :) Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 21:02 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousАн нет - SY тоже дисквалифицирован :) А что-еще ты ожидал? Законы комбинаторики еще никто не отмeнял . Если число строк для каждого C1 в пределах, то все будет пучком. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 21:35 |
|
||
|
Группировка в Oracle
|
|||
|---|---|---|---|
|
#18+
SYandrey_anonymousАн нет - SY тоже дисквалифицирован :) А что-еще ты ожидал? Ну я как-то вот так примерно ожидал: andrey_anonymous Код: plsql 1. 2. 3. Комбинаторику-то не обманешь, это правда, но зачем же стулья ломать? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 21:42 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39634349&tid=1884085]: |
0ms |
get settings: |
10ms |
get forum list: |
24ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
95ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 222ms |
| total: | 441ms |

| 0 / 0 |
