|
Как отсортировать группы ?
|
|||
---|---|---|---|
#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. 45. 46. 47. 48. 49.
Эти данные отправляются во внешний сервис с сортировкой по полям order by CONTRACT_NUM asc, PRIORITY asc, ACC_PRIORITY asc. Хочется оптимизировать отправку данных - сделать отправку группами. Единственное препятствие: - в группах должны быть только уникальные ACCOUNT - должна сохранятся сортировка в рамках CONTRACT_NUM asc, PRIORITY asc, ACC_PRIORITY asc. Простое решение: Код: plsql 1. 2. 3. 4.
Столкнулось с проблемой нарушения sending_seq: CONTRACT_NUMPRIORITYACC_PRIORITYACCOUNTSENDING_SEQSENDING_GROUPContract 021Account 14011Contract 071Account 14022Contract 1421Account 4031Contract 1422Account 14043Contract 6321Account 16051Contract 6322Account 18061Contract 6323Account 14074Contract 6371Account 16082Contract 6372Account 18092Contract 6373Account 140105Contract 721Account 80111Contract 722Account 180123Contract 723Account 140136Contract 771Account 80142Contract 772Account 180154Contract 773Account 140167 Есть ли приличный(не уходя в PL\SQL) способ создать SENDING_GROUP не противоречащие двум условиям? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 19:48 |
|
Как отсортировать группы ?
|
|||
---|---|---|---|
#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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 22:41 |
|
Как отсортировать группы ?
|
|||
---|---|---|---|
#18+
SY, Я извиняюсь, возможно я не точно сформулировал, но по sending_seq получаются одинаковые account(- в группах должны быть только уникальные ACCOUNT), а по sending_group нарушается второе условие. Должно получится что-то подобное: №CONTRACT_NUMPRIORITYACC_PRIORITYACCOUNTSENDING_GROUP1Contract 021Account 14012Contract 071Account 14023Contract 1421Account 4024Contract 1422Account 14035Contract 6321Account 16036Contract 6322Account 18037Contract 6323Account 14048Contract 6371Account 16049Contract 6372Account 180410Contract 6373Account 140511Contract 721Account 80512Contract 722Account 180513Contract 723Account 140614Contract 771Account 80615Contract 772Account 180616Contract 773Account 1407 Или так: №CONTRACT_NUMPRIORITYACC_PRIORITYACCOUNTSENDING_GROUP1Contract 021Account 14012Contract 071Account 14023Contract 1421Account 4014Contract 1422Account 14035Contract 6321Account 16016Contract 6322Account 18017Contract 6323Account 14048Contract 6371Account 16049Contract 6372Account 180410Contract 6373Account 140511Contract 721Account 80112Contract 722Account 180213Contract 723Account 140614Contract 771Account 80615Contract 772Account 180616Contract 773Account 1406 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 22:59 |
|
Как отсортировать группы ?
|
|||
---|---|---|---|
#18+
Hibiscus Я извиняюсь, возможно я не точно сформулировал, но по sending_seq получаются одинаковые account(- в группах должны быть только уникальные ACCOUNT), а по sending_group нарушается второе условие. Вообще, у тебя огромная разница между двумя примерами: в Должно получится что-то подобное: Hibiscus №CONTRACT_NUMPRIORITYACC_PRIORITYACCOUNTSENDING_GROUP1Contract 021Account 14012Contract 071Account 14023Contract 1421Account 4024Contract 1422Account 14035Contract 6321Account 16036Contract 6322Account 18037Contract 6323Account 14048Contract 6371Account 16049Contract 6372Account 180410Contract 6373Account 140511Contract 721Account 80512Contract 722Account 180513Contract 723Account 140614Contract 771Account 80615Contract 772Account 180616Contract 773Account 1407 а в Или так: Hibiscus №CONTRACT_NUMPRIORITYACC_PRIORITYACCOUNTSENDING_GROUP1Contract 021Account 14012Contract 071Account 14023Contract 1421Account 4014Contract 1422Account 14035Contract 6321Account 16016Contract 6322Account 18017Contract 6323Account 14048Contract 6371Account 16049Contract 6372Account 180410Contract 6373Account 140511Contract 721Account 80112Contract 722Account 180213Contract 723Account 140614Contract 771Account 80615Contract 772Account 180616Contract 773Account 1406 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 23:39 |
|
Как отсортировать группы ?
|
|||
---|---|---|---|
#18+
xtender, Не не, все же я видно плохо написал. Условие - должна сохранятся сортировка в рамках CONTRACT_NUM asc, PRIORITY asc, ACC_PRIORITY asc. в рамках каждого договора должна сохранится последовательность отправки по PRIORITY и ACC_PRIORITY, пусть и в разных группах. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 23:55 |
|
Как отсортировать группы ?
|
|||
---|---|---|---|
#18+
Hibiscus Должно получится что-то подобное: пятница, устал наверное что-то кроме иерархии + мултисет/(конкатенация в строку) ничего хорошего в голову не приходит ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2020, 10:50 |
|
Как отсортировать группы ?
|
|||
---|---|---|---|
#18+
Получилось! Видимо во сне пришло :-) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Причем оба варианта. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2020, 11:43 |
|
Как отсортировать группы ?
|
|||
---|---|---|---|
#18+
Hibiscus Получилось! для Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
группа меняется? .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2020, 12:18 |
|
Как отсортировать группы ?
|
|||
---|---|---|---|
#18+
Hibiscus, через гланды Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2020, 12:20 |
|
Как отсортировать группы ?
|
|||
---|---|---|---|
#18+
Hibiscus Причем оба варианта. Если же требуется соответствие обоим правилам, то в записимости от того, что понимается по сохранением сортировки Либо Код: 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.
Либо второй агрегат как-то так (если интересует неубывание по приоритету безотносительно остального) Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2020, 12:56 |
|
Как отсортировать группы ?
|
|||
---|---|---|---|
#18+
Stax, не так понял и сделал для partition by contract_num легко убрать ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2020, 13:13 |
|
Как отсортировать группы ?
|
|||
---|---|---|---|
#18+
Кобанчег Код: plsql 1. 2. 3. 4.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Это будет чуть эффективнее. Но однопроходный PL/SQL с ассициативным массивом по account и без всяких агрегатов будет эффективнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2020, 14:32 |
|
|
start [/forum/topic.php?fid=52&fpage=42&tid=1881099]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 411ms |
0 / 0 |