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

Откуда: Москва
Сообщений: 556
Каким образом можно ссылаться на столбец предыдущей строки, рассчитываемый с помощью аналитической функции, внутри этой же аналитической функции? Мне это нужно для реализации кумулятивной функции, которая для каждой строки учитывает результат вычисления для предыдущих строк.
7 июл 15, 10:16    [17860677]     Ответить | Цитировать Сообщить модератору
 Re: Ссылка на столбец предыдущей строки, рассчитываемый с помощью аналитической функции  [new]
проходил мимо...
Member

Откуда: от верблюда
Сообщений: 1178
Interloper,

Если я правильно понял ваши сумбурные измышления, то точно так же, как и без аналитической функции - через lag. Другое дело, что, возможно, придётся обернуться ещё одним селектом.
Впрочем, если вы приведёте пример, чего хотите, помочь вам будет проще :)
7 июл 15, 10:38    [17860763]     Ответить | Цитировать Сообщить модератору
 Re: Ссылка на столбец предыдущей строки, рассчитываемый с помощью аналитической функции  [new]
Добрый Э - Эх
Guest
Interloper,

рекурсивный WITH или MODEL тебе в помощь.
7 июл 15, 10:40    [17860774]     Ответить | Цитировать Сообщить модератору
 Re: Ссылка на столбец предыдущей строки, рассчитываемый с помощью аналитической функции  [new]
Interloper
Member

Откуда: Москва
Сообщений: 556
Добрый Э - Эх,

Мне нужно без рекурсии и без моделей.
7 июл 15, 10:44    [17860788]     Ответить | Цитировать Сообщить модератору
 Re: Ссылка на столбец предыдущей строки, рассчитываемый с помощью аналитической функции  [new]
Interloper
Member

Откуда: Москва
Сообщений: 556
проходил мимо...,

Я хочу посчитать произведение значений столбца с помощью аналитических функций. Без использования рекурсивных запросов и моделей.
7 июл 15, 10:45    [17860795]     Ответить | Цитировать Сообщить модератору
 Re: Ссылка на столбец предыдущей строки, рассчитываемый с помощью аналитической функции  [new]
Да ну
Member

Откуда: Первопрестольная
Сообщений: 242
Interloper
Я хочу посчитать произведение значений столбца с помощью аналитических функций. Без использования рекурсивных запросов и моделей.

EXP(SUM(LN(column)))
POWER(N,SUM(LOG(column, N)))
7 июл 15, 10:54    [17860845]     Ответить | Цитировать Сообщить модератору
 Re: Ссылка на столбец предыдущей строки, рассчитываемый с помощью аналитической функции  [new]
ArtNick
Member

Откуда:
Сообщений: 1227
Interloper
проходил мимо...,

Я хочу посчитать произведение значений столбца с помощью аналитических функций. Без использования рекурсивных запросов и моделей.

хочешь- считай. Exel или recursive with тебе в помощь
7 июл 15, 11:44    [17861251]     Ответить | Цитировать Сообщить модератору
 Re: Ссылка на столбец предыдущей строки, рассчитываемый с помощью аналитической функции  [new]
ArtNick
Member

Откуда:
Сообщений: 1227
Да ну
Interloper
Я хочу посчитать произведение значений столбца с помощью аналитических функций. Без использования рекурсивных запросов и моделей.

EXP(SUM(LN(column)))
POWER(N,SUM(LOG(column, N)))

нет, он хочет произведение
типа такого, только функции такой еще нет:
with t as
(select 2 val from dual
 union all 
 select 3 from dual
 union all 
 select 4 from dual)
select  multiplication(val) over (order by val rows between unbounded preceding and current row) rez  from t
7 июл 15, 11:49    [17861306]     Ответить | Цитировать Сообщить модератору
 Re: Ссылка на столбец предыдущей строки, рассчитываемый с помощью аналитической функции  [new]
Interloper
Member

Откуда: Москва
Сообщений: 556
Да ну,

Этот способ мне известен.
7 июл 15, 11:51    [17861321]     Ответить | Цитировать Сообщить модератору
 Re: Ссылка на столбец предыдущей строки, рассчитываемый с помощью аналитической функции  [new]
ArtNick
Member

Откуда:
Сообщений: 1227
Interloper
проходил мимо...,

Я хочу посчитать произведение значений столбца с помощью аналитических функций. Без использования рекурсивных запросов и моделей.

Ну или другой вариант, если окно не нужно, сначала XMLAGG значений и напиши функцию которая XML а курсор и циклом.
Или user aggregate function
7 июл 15, 11:53    [17861337]     Ответить | Цитировать Сообщить модератору
 Re: Ссылка на столбец предыдущей строки, рассчитываемый с помощью аналитической функции  [new]
!Z!
Guest
ArtNick,

Добавлю, как один из вариантов этой функции.

select XMLCAST(XMLQUERY(multi RETURNING CONTENT) AS NUMBER) from (select '5*16*2' multi from dual)
7 июл 15, 12:28    [17861640]     Ответить | Цитировать Сообщить модератору
 Re: Ссылка на столбец предыдущей строки, рассчитываемый с помощью аналитической функции  [new]
GOSTь
Guest
ArtNick
Да ну
пропущено...

EXP(SUM(LN(column)))
POWER(N,SUM(LOG(column, N)))

нет, он хочет произведение
типа такого, только функции такой еще нет:
with t as
(select 2 val from dual
 union all 
 select 3 from dual
 union all 
 select 4 from dual)
select  multiplication(val) over (order by val rows between unbounded preceding and current row) rez  from t


Так ведь это произведение и есть. ???
SQL> with a as (
  2  select 1 id, 5 nr from dual union all
  3  select 2 id, 1/2 nr from dual union all
  4  select 3 id, 2 nr from dual union all
  5  select 4 id, 3 nr from dual union all
  6  select 5 id, 2 nr from dual union all
  7  select 6 id, 10 nr from dual
  8  )
  9  select nr,
 10         substr(listagg(nr,'*') within group (order by id) over (partition by 1),1,
 11          decode(instr(listagg(nr,'*') within group (order by id) over (partition by 1),'*',1,count(1) over (order by id)),
 12           0,99,
 13           instr(listagg(nr,'*') within group (order by id) over (partition by 1),'*',1,count(1) over (order by id)))-1)
 14           ||'=' text,
 15         exp(sum(ln(nr)) over (order by id)) summ
 16  from   a;
        NR TEXT                    SUMM
---------- ----------------- ----------
         5 5=                         5
       0,5 5*,5=                    2,5
         2 5*,5*2=                    5
         3 5*,5*2*3=                 15
         2 5*,5*2*3*2=               30
        10 5*,5*2*3*2*10=           300
6 rows selected

SQL>  
7 июл 15, 13:03    [17861968]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить