Интерполированные результаты
Уважаемые эксперты! Я правильно интерполировал значения для AddOn (выделены желтым цветом) с использованием аналитических функций regr_slope и regr_intercept с помощью приведенного ниже сценария
with CLP_ADDON_CALC_STG (addon_product, term_years, underlying_term_years, addon) as
( SELECT 'CCREPO', 0.5, 5 , 0.0447 FROM DUAL UNION ALL
SELECT 'CCREPO', 0.5, 10 , 0.0516 FROM DUAL UNION ALL
SELECT 'CCREPO', 0.7, 9 , NULL FROM DUAL UNION ALL
SELECT 'CCREPO', 1, 5 , 0.0567 FROM DUAL UNION ALL
SELECT 'CCREPO', 1, 10 , 0.0487 FROM DUAL)
,ordered_input_1 as (
SELECT
i.*,
row_number() over ( partition by addon_product order by term_years) rn
FROM CLP_ADDON_CALC_STG i where (underlying_term_years < 9 or ( term_years < 0.7 and term_years > 0.7))
or (term_years = 0.7 and underlying_term_years = 9)order by term_years, underlying_term_years
-- where i.term_years
)
SELECT
addon_product,
term_years,
underlying_term_years,
addon,
term_years * regr_slope(addon, term_years) over ( partition by addon_product) +
regr_intercept(addon, term_years) over ( partition by addon_product)
as interpolated_value
FROM ordered_input_1
ORDER BY addon_product, term_years;
Теперь я нахожусь в ситуации, когда мне нужно выполнить интерполяцию по интерполированным значениям, полученным выше, для которых я не могу расположить строки в порядке, необходимом для вышеуказанной аналитической функции. Я ссылался на эту ссылку, чтобы привести строки в порядок ( Линейная интерполяция в Oracle с особыми случаями ) Но для следующего раунда интерполяции, для которого мне понадобятся строки в некотором порядке, или мне понадобитсязапрос (в строках, как видно из изображения, интерполированных результатов), который будет делать что-то вроде следующей формулы ((9-5)*0.05364 + (10-9)*0.0463)/(10-5)
, что даст мне 0.052712
Любая помощь будет принята с благодарностью. Заранее спасибо, Мурали