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

Откуда: from Paris with love
Сообщений: 525
Есть к примеру
select 0 as n from dual
Нужно вывести последовательность чисел с завивимостью к примеру n(i) = n(i-1)+10.
Lag спотыкаецо уже на второй ступеньке понятное дело.
Вроде бы все так просто, как теорема Ферма, но можно ли доказать на sql?
1 апр 13, 12:27    [14120939]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
AmKad
Member

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

model, recursive with?
1 апр 13, 12:29    [14120964]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
Sacramento
Member [заблокирован]

Откуда: from Paris with love
Сообщений: 525
AmKad
model, recursive with?
Ах, пардоньте, забыл
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Но видимо с моделью можно повозиццо, хотя предчуствую что овчинка выделки стоить не будет для прикладной потребности
1 апр 13, 12:35    [14120998]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
init.ora
Member

Откуда: гетто
Сообщений: 317
with x(a) as(
select 0 a from dual
union all
select a+10 from x  where a<=100  
)
select *
from x  
1 апр 13, 12:36    [14121005]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
init.ora
Member

Откуда: гетто
Сообщений: 317
Sacramento
AmKad
model, recursive with?
Ах, пардоньте, забыл
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Но видимо с моделью можно повозиццо, хотя предчуствую что овчинка выделки стоить не будет для прикладной потребности


не увидел
1 апр 13, 12:36    [14121008]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
AmKad
Member

Откуда:
Сообщений: 5222
select n + sum(10) over (order by rownum) - 10 new_n
from
   (select 0 n 
    from dual
   )
connect by level <= 10;
1 апр 13, 12:40    [14121032]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
-2-
Member

Откуда:
Сообщений: 15330
Один я не понял глубины задачи? Должно получиться:
0, 10, 20, 30, ...?
1 апр 13, 12:40    [14121036]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
Sacramento
Member [заблокирован]

Откуда: from Paris with love
Сообщений: 525
AmKad
select n + sum(10) over (order by rownum) - 10 new_n
from
   (select 0 n 
    from dual
   )
connect by level <= 10;
Не, не, не. Это часный случай упрощенного мною примера. В уравнении обязательно должен фигурировать предыдущий элемент. У меня ваще тут дата...
Типа
dt(i) = add_months((dt(i-1) - 1), 1)
1 апр 13, 12:48    [14121074]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
mlc
Member

Откуда: Asus Winter Cup
Сообщений: 487
-2-,

не один. если правильно понял
select n+ (level-1)*10 from 
(select 0 n 
    from dual
   ) connect by level <= 10;
1 апр 13, 12:49    [14121077]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
AmKad,
зачем так сложно? чем не устроил (level -1) *10?
1 апр 13, 12:52    [14121099]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
AmKad
Member

Откуда:
Сообщений: 5222
Vint
чем не устроил (level -1) *10?
Да, можно было и так. Но насколько я понял автора и это не устраивает.
1 апр 13, 12:55    [14121122]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
collow
Member

Откуда:
Сообщений: 324
Рукописный агрегат
1 апр 13, 13:12    [14121218]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
mlc
Member

Откуда: Asus Winter Cup
Сообщений: 487
Sacramento
У меня ваще тут дата...
Типа
dt(i) = add_months((dt(i-1) - 1), 1)

если правильно понял
SELECT s
FROM dual
MODEL DIMENSION BY (0 d)
    MEASURES (to_date('20130101','yyyymmdd') s)
    RULES ITERATE (10) (
        s[iteration_number] = coalesce( add_months( s[cv()-1] -1 , 1) , s[cv()])            
    );
1 апр 13, 13:27    [14121308]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
Sacramento
Member [заблокирован]

Откуда: from Paris with love
Сообщений: 525
mlc
если правильно понял
SELECT s
FROM dual
MODEL DIMENSION BY (0 d)
    MEASURES (to_date('20130101','yyyymmdd') s)
    RULES ITERATE (10) (
        s[iteration_number] = coalesce( add_months( s[cv()-1] -1 , 1) , s[cv()])            
    );
Да, модель неплоха, и компактна главное, то что надо, сенкс
1 апр 13, 15:24    [14121955]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
Sacramento
mlc
если правильно понял
SELECT s
FROM dual
MODEL DIMENSION BY (0 d)
    MEASURES (to_date('20130101','yyyymmdd') s)
    RULES ITERATE (10) (
        s[iteration_number] = coalesce( add_months( s[cv()-1] -1 , 1) , s[cv()])            
    );
Да, модель неплоха, и компактна главное, то что надо, сенкс


я думаю здесь "connect by level" компактнее чем модель
1 апр 13, 15:57    [14122216]     Ответить | Цитировать Сообщить модератору
 Re: Squirrel  [new]
Sacramento
Member [заблокирован]

Откуда: from Paris with love
Сообщений: 525
Ramin Hashimzade
я думаю здесь "connect by level" компактнее чем модель
С удовольствием приму вариант
1 апр 13, 16:01    [14122252]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить