Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Расчёт Полной Стоимости Кредита (ПСК)
|
|||
|---|---|---|---|
|
#18+
Приветуськи! Люди добрые, помогите кто чем сможет.. Есть код для расчёта ПСК. Но работает он категорически медленно. Переписал его с делфи, там он ворочается намного быстрее. 50 сек в базе считает и <1 сек в делфи. Улучшал как мог, максимум получилось ускорить до 21 сек, при помощи хранения циферок в varchar(max) и распарсиванием их. Возможно я чего-то не учёл и можно как-то лучше написать код. В данный момент пытаюсь составить рекурсивный код на чистом sql, но красный текст Функции GROUP BY, HAVING и агрегатные функции не разрешены в рекурсивной части рекурсивного обобщенного табличного выражения "func". мешает пока что. Изначальный код выжатый из Delphi: Код: 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. 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. Код проапргрейденный для добычи данных из varchar(max): Код: 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. 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. Функция LPAD: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. В общем, желательно скорость выполнения улучшить до 5 сек в идеале 1 сек. 3й день оптимизирую, хз что ещё можно придумать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 09:04 |
|
||
|
Расчёт Полной Стоимости Кредита (ПСК)
|
|||
|---|---|---|---|
|
#18+
ora0ra, Замени Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 09:27 |
|
||
|
Расчёт Полной Стоимости Кредита (ПСК)
|
|||
|---|---|---|---|
|
#18+
ora0ra, а) общий расчет у вас неправильный Правило: "Процентная ставка базового периода определяется как наименьшее положительное решение уравнения:" А у вас получается даже больше наибольшего отрицательного. Смотрите: Код: sql 1. 2. 3. Т.е. правильный ответ - 0.059082000, а у вас получается 0.059084000. б) вы очень маленькими шагами двигаетесь к решению. Каждый раз прибавляя по 0.000001, вы получаете 59 тысяч шагов. Нужно сначала делать крупное приближение, потом увеличивать точность. Можно использовать метод половинного деления, я сделал через десятичный множитель - при каждом приближении увеличиваем точность в 10 раз: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 11:21 |
|
||
|
Расчёт Полной Стоимости Кредита (ПСК)
|
|||
|---|---|---|---|
|
#18+
Massa52, Благодарствую! 4 сек, хорош. Да похоже я просмотрел этот кусок... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 13:31 |
|
||
|
Расчёт Полной Стоимости Кредита (ПСК)
|
|||
|---|---|---|---|
|
#18+
Minamoto, Благодарю! Алгоритм воообще бомба! Ты гений! По шагам увеличивая точность.. просто мозг!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 13:35 |
|
||
|
Расчёт Полной Стоимости Кредита (ПСК)
|
|||
|---|---|---|---|
|
#18+
ora0raФункции GROUP BY, HAVING и агрегатные функции не разрешены в рекурсивной части рекурсивного обобщенного табличного выражения Можно оконные, а потом фильтрануть по row_number() over(order by (select null))=1. Единственное, агрегат sum() без group by в случае пустой таблицы себя иначе ведет, чем с ним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2019, 03:42 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39849753&tid=1687395]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 355ms |

| 0 / 0 |
