Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Подсчет значений (учитывая предыдущие результаты)  [new]
Goldenlady
Member

Откуда:
Сообщений: 8
Добрый день!
Очень нужна ваша помощь, я уже запуталась.
Вроде бы простая задача: необходимо подсчитать значение с учетом корректировок(корректировки хранятся в таблице, поля lastdate и quantity).(хотелось бы обойтись только sql)
Корректировка - это некий процент от числа, высчитывается так: Значание+ Значение*процент.
Если к значению применено более одной корректировки, то они действую в порядке создания записей.
И если действуют две корректировки, то формула выползает следующая:
A1=A+AX (X-корректировка №1)
A2=(A+AX)+(A+AX)*y, (Y-корректировка №2)
т.е. 2ю корректировку нужно наложить уже на результат применения первой корректировки.
Вроде задача несложная, но не получается предыдущее значение захватить и применить новые корректировки.
20 авг 14, 12:31    [16467491]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет значений (учитывая предыдущие результаты)  [new]
Previous
Guest
Goldenlady,

Lag это не только брус
20 авг 14, 12:37    [16467529]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет значений (учитывая предыдущие результаты)  [new]
Goldenlady
Member

Откуда:
Сообщений: 8
Previous,

Не сработало. Крутила, но дальше 2й корректировки не ушла. Не смогла протащить предыдущее расчетное значение дальше.
20 авг 14, 12:49    [16467640]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет значений (учитывая предыдущие результаты)  [new]
Previous
Guest
Goldenlady,

показывай тестовые данные, как используешь и что на выходе.
20 авг 14, 13:04    [16467765]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет значений (учитывая предыдущие результаты)  [new]
Glays
Member

Откуда:
Сообщений: 2364
Goldenlady,

WITH asdf
     AS (SELECT 1 AS a, 10 AS x FROM DUAL
         UNION
         SELECT 2 AS a, 100 AS x FROM DUAL
         UNION
         SELECT 3 AS a, 1000 AS x FROM DUAL
         UNION
         SELECT 4 AS a, 10000 AS x FROM DUAL)
SELECT SUM (a + a * x) OVER (ORDER BY a)
  FROM asdf

Оно?
20 авг 14, 13:11    [16467817]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет значений (учитывая предыдущие результаты)  [new]
Elic
Member

Откуда:
Сообщений: 29979
Goldenlady
Не смогла протащить предыдущее расчетное значение дальше.
итеративная model (10g) или recursive subquery (11g)
20 авг 14, 13:54    [16468168]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет значений (учитывая предыдущие результаты)  [new]
stax..
Guest
Goldenlady,


коректіруем 200
  1  with t  as (
  2  select 1 id,0.10 q from dual union all
  3  select 2 id,0.20 q from dual union all
  4  select 3 id,0.30 q from dual )
  5* select 200*exp(sum(ln(1+q))) from t
SQL> /

200*EXP(SUM(LN(1+Q)))
---------------------
                343,2


.....
stax
20 авг 14, 15:27    [16468867]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить