|
|
|
Выстрел в мозг
|
|||
|---|---|---|---|
|
#18+
Доброго дня господа ! Переопределение удельного веса в группе/подгруппе при отсутствие показателя Имею исходные данные ID PARENT RATE EXES 1 10 40 1 2 10 60 0 3 9 20 1 4 9 80 0 5 4 30 0 6 4 70 1 7 8 100 0 8 0 10 0 9 0 70 0 10 0 20 0 11 5 45 1 12 5 55 0 Дерево визуально 0 -- (корень) --8 --7 --9 --3 --4 --5 --11 --12 --6 --10 --1 --2 Отсутствие показателя это EXES=0 (поле другой таблицы Left join) при это веса группы в которой находиться это показатель перераспределяются ID RATE EXES FORMULA RESULT 1 10 1 =10*1 / (10*1 + 20*0 +70 *1)*100 12.5 2 20 0 =20*0 / (10*1 + 20*0 +70 *1)*100 0 3 70 1 =70*1 / (10*1 + 20*0 +70 *1)*100 87.5 Реальный пример ID PARENT RATE EXES RESULT 1 10 40 1 100 2 10 60 0 В случае если все показатели одной группы EXES = 0 - такой группы нет (родителя тоже нет) ее вес перераспределяется по аналогичному принципу на родительские группы Реальный пример ID PARENT RATE EXES 7 8 100 0 8 0 10 0 - дочери равны нулю - родитель обнулен ID PARENT RATE EXES FORMULA RESULT 8 0 10 0 =10*0 / (10*0 + 70*1 +20 *1)*100 0 9 0 70 1 =70*1 / (10*0 + 70*1 +20 *1)*100 77.7778 10 0 20 1 =20*1 / (10*0 + 70*1 +20 *1)*100 22.2222 Если родитель имеет EXES=0, но его дочери имеют хотя бы один из составляющих EXES=1 удельный вес группы включается в расчет Реальный пример ID PARENT RATE EXES 4 9 80 0 Но дочер. елемены существуют ID PARENT RATE EXES 5 4 30 0 6 4 70 1 - есть один составляющий В окончательный расчет должны получить удельные веса САМЫЙ НИЗШЕЙ дочерней группы !!!! учитывая веса всех родительских групп !!!! итоговой сумме равны 100 (если родитель - является дочерью другой группы величина не включена) Результат Исх.вес Перерасчет FORMULA RESULT 0 100.00 --8 10 0 0 0 --7 100 0 0 0 --9 70 77.78 0 0 --3 20 20 =20/100*77.78/100*100 15.556 --4 80 80 0 0 --5 30 30 0 0 --11 45 100 =100/100*30/100*80/100*77.78/100*100 18.6672 --12 55 0 0 0 --6 70 70 =70/100*80/100*77.78/100*100 43.5568 --10 20 22.22 0 0 --1 40 100 =100/100*22.22/100*100 22.22 --2 60 0 0 0 Возможно ли создать эдакое МОЗГОВПРАВСТВО средствами Oracle SQL Кол-во вложений неизвестно и задается пользователем Подчиненность может быть определена иерар. структ. кодом Типа Родитель = 1 Дочь = 11 Дочь = 12 След. дочь = 121 Заранее благодарен ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 13:00 |
|
||
|
Выстрел в мозг
|
|||
|---|---|---|---|
|
#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. 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. сегодня не только лишь все могут читать такую кашу. точнее, читать могут все, но никто не будет этого делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 13:04 |
|
||
|
Выстрел в мозг
|
|||
|---|---|---|---|
|
#18+
HOME_X, Деревья скрокозябрыло .... Скрин прилагаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 13:10 |
|
||
|
Выстрел в мозг
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, Спасибо за дубль ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 13:13 |
|
||
|
Выстрел в мозг
|
|||
|---|---|---|---|
|
#18+
HOME_X, Код: 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. ? Вместо модели можно по вкусу - аналитика - подзапрос/соединение - pattern matching - rec with Читай тему Агрегация сумм в иерархических запросах , только тебе надо не агрегат суммы, а max + greatest, чтоб получить признак EXES_CALC для родительских записей. PS. Имеется небольшой прогресс в формулировании постановки, видно старался. В следующий раз еще потрудись приводить данные в виде with + union all и над названием темы надо было больше поработать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 14:42 |
|
||
|
Выстрел в мозг
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Огромное спасибо за то что ПРОЧИТАЛИ и ВНИКЛИ !!!!!!!!!! (за решение отдельно) Попытался решить так - еще "допиливаю/упрощаю" Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 16:26 |
|
||
|
Выстрел в мозг
|
|||
|---|---|---|---|
|
#18+
HOME_Xdbms_photoshop, Огромное спасибо за то что ПРОЧИТАЛИ и ВНИКЛИ !!!!!!!!!! (за решение отдельно) Попытался решить так - еще "допиливаю/упрощаю"В решение позволю себе уже не вникать, но двойной connect by и оба раз без start with выглядит крайне сомнительно. Если цель еще взвесить листья с учетом взвешенных узлов первого уровня. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 17:28 |
|
||
|
Выстрел в мозг
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopно двойной connect 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. 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. Вроде не очень громоздко получилось ... Спасибо за советы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 22:37 |
|
||
|
Выстрел в мозг
|
|||
|---|---|---|---|
|
#18+
Глянув на селект заметил (Выделено красным в спойлере) HOME_X Код: 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. и как предложение Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2017, 12:07 |
|
||
|
Выстрел в мозг
|
|||
|---|---|---|---|
|
#18+
HOME_XВроде не очень громоздко получилосьДа, вполне читаемо. При большом желании можно обойтись построением дерева из корня и натянуть сверху модель. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2017, 16:11 |
|
||
|
Выстрел в мозг
|
|||
|---|---|---|---|
|
#18+
bug nullif Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2017, 16:26 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39520415&tid=1885251]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 487ms |

| 0 / 0 |
