質問: Есть запрос который вычисляет эффективную процентную ставку. Для точности нужно увеличить количество знаков после запятой как минимум до 6. Помогите переделать запрос. Сейчас он выводит `2.8613`, а хочется как минимум 2.8613XX ``` WITH t(amnt) AS( SELECT -294000.00 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17084.24 FROM DUAL UNION ALL SELECT 17674.51 FROM DUAL ) select max(k3.irr3) KEEP (DENSE_RANK FIRST ORDER BY abs(sum(decode(s3.rn3,0,s3.amnt,s3.amnt/power((1+k3.IRR3/100),rn3))))) IRR3_ from (select IRR3 from (select (IRR2_-1/100)+(level-1)/10000 IRR3 from (select max(k2.irr2) KEEP (DENSE_RANK FIRST ORDER BY abs(sum(decode(s2.rn2,0,s2.amnt,s2.amnt/power((1+k2.IRR2/100),rn2))))) IRR2_ from (select IRR2 from (select (IRR_-1)+(level-1)/100 IRR2 from (select max(k.irr) KEEP (DENSE_RANK FIRST ORDER BY abs(sum(decode(rn,0,amnt,amnt/power((1+k.IRR/100),rn))))) IRR_ from (select (level-1) IRR from dual connect by level <= 101) k, (select rownum-1 rn, amnt from t ) s group by k.irr) connect by level <= 201) where IRR2 between 0 and 100) k2, (select rownum-1 rn2, amnt from t ) s2 group by k2.irr2) connect by level <= 201) where IRR3 between 0 and 100) k3, (select rownum-1 rn3, amnt from t ) s3 group by k3.irr3 ```
回答: Если это вопрос из собеседования, то возможно вам подойдет заменить строку: ``` from (select IRR3 from (select (IRR2_-1/100)+(level-1)/10000 IRR3 ``` на: ``` from (select IRR3 from (select (IRR2_-1/100)+(level-1)/10000 + (level-1)/1000000 IRR3 ``` Если это реальное вычисление эффективной процентной ставки по графику платежей, во что верится с трудом, то не плохо было бы чтобы постановщик задачи объяснил, как вычислять 2.8613XX