[oracle] sql modeling [fixed]

Teteshnik

подскажите плиз где ошибка. хочется чтобы
y[i]=0.05 * x[i], если 0.05 * x[i]<1000, то y[i]=1000
x[i+1]=x[i]-y[i], где i>=1
короче, рассчеты не важны. главное что итерация чо-то больше 2 у меня не идет.
[code=sql]
SELECT * FROM
  (
  SELECT 1 C, 102400 x, 512 y FROM dual
  UNION ALL
  SELECT 2 C, NULL x, 0 y FROM dual
  UNION ALL
  SELECT 3 C, NULL x, 0 y FROM dual
  UNION ALL
  SELECT 4 C, NULL x, 0 y FROM dual
  UNION ALL
  SELECT 5 C, NULL x, 0 y FROM dual
  )
MODEL --RETURN UPDATED ROWS
dimension BY ( C )
measures (X, Y)
rules (
X[1]=X[1],
Y[1]=CASE
WHEN Y[1]>=1000 THEN Y[1]
WHEN Y[1]=0 AND 0.05*X[1]>=1000 THEN 0.05*X[1]
ELSE 1000
END
,
X[C>1]=X[CV(C)-1]-Y[CV(C)-1],
Y[C>1]=CASE
WHEN (X[CV(C)-1]-Y[CV(C)-1])*0.05>=1000 THEN (X[CV(C)-1]-Y[CV(C)-1])*0.05
ELSE 1000
END
)
[/code]

Teteshnik

все ясно. нужен rules automatic order

dava

если не секрет, ты model в реальном продакшн коде юзаешь или просто для интереса?

Teteshnik

в реальном коде. нужен отчет прогнозирующий гашение средств. с кучей веселых условий. формула рекурентная в большей степени. кроме того что она рекурентная, она еще на первых итерациях сильно зависит от начальных условий.
ну т.е. отчет который приведен сильно упрощен, но и уже его нельзя сделать без модели.
Да? вроде да.

Teteshnik

кстати ты ж в банке работаешь. 125 форма короче.

dava

ну я с ЦБ формами особенно близок не был никогда
вопрос скорее к тому, что модель никто почти не знает, поэтому если в штате и будешь когда-либо делегировать, то юзать её опасно, но если по консалтингу, то конечно надо юзать как можно больше :D
Оставить комментарий
Имя или ник:
Комментарий: