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

Откуда:
Сообщений: 1001
Добрый вечер уважаемы коллеги!
Помогите пожалуйста решить такую задачу.
На выходе должно быть таблица из 2-х полей.
1 это ИД-шник таблицы, а вторая должна начинаться с нуля и постоянно к ней должно прибавляться случайное число от -1 до 1-го. Т. е. к предыдущему значению одного и того же поля должно прибавляться случайное число из определенного диапазона.
Дошел до такого маразма и у меня просто мозг перестал работать, помогите плиз.

select b.object_id,
       b.ab,
       b.RAND_VALUE,
       LEAD(RAND_VALUE, 1) over (order by object_id),
       LAG(RAND_VALUE, 1) over (order by object_id),
       --LEAD(RAND_VALUE, 1) over (order by object_id) + LAG(RAND_VALUE, 1) over (order by object_id),
       decode(LAG(RAND_VALUE, 1) over (order by object_id), null, 0) as ttt
       --(LAST_VALUE(RAND_VALUE) over (partition by object_id) + ROUND(DBMS_RANDOM.VALUE(-1,1), 2))
  from (select object_id,
               0 ab,
               ROUND(DBMS_RANDOM.VALUE(-1,1), 2) as RAND_VALUE
          from dba_objects 
         where rownum < 1000
         order by object_id) b
14 мар 12, 18:09    [12248363]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность чисел  [new]
vadipok
Member

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

Сам решил проблему, извините за панику
select b.object_id,
       b.ab,
       b.RAND_VALUE, 
       sum(b.RAND_VALUE) over(order by b.object_id)
  from (select object_id,
               0 ab,
               ROUND(DBMS_RANDOM.VALUE(-1,1), 2) as RAND_VALUE
          from dba_objects 
         where rownum < 1000
         order by object_id) b
14 мар 12, 18:23    [12248441]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность чисел  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10051
vadipok
Сам решил проблему, извините за панику


Ну и сколько случайных чисел из ты получишь в этих 999 строках используя ROUND(DBMS_RANDOM.VALUE(-1,1), 2)?

SY.
14 мар 12, 18:48    [12248584]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность чисел  [new]
vadipok
Member

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

Тут смысл был в другом.
Нужно было создать искусственное изменение валюты. Типа как график за последний год, квартал или месяц.
Ну не может же доллар сегодня стоит 100 рублей, а завтра -50.
Просто хотелось более или менее изменение валюты, примерное похожее на правду.
Там еще делается FULL JOIN с справочником валют. В итоге получилось вот так:
select b.date_val,
       u.ITEM_KEY,
       sum(ROUND(DBMS_RANDOM.VALUE(-1,1), 2)) over(order by u.ITEM_KEY, b.date_val)
  from (select to_date('18.06.2009', 'dd.mm.yyyy') + rownum date_val from dba_objects where rownum < 1000) b
       FULL JOIN (select ITEM_KEY from VALUTA.USE_VALUTA where rownum<6 and ITEM_KEY != 'RUR') u on 1=1
order by date_val; 
14 мар 12, 19:10    [12248711]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность чисел  [new]
-2-
Member

Откуда:
Сообщений: 15330
vadipok
Нужно было создать искусственное изменение валюты.
Зачем искусственное?
select *
from xmltable('/ValCurs/Record' passing httpuritype('http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=02/03/2012&date_req2=14/03/2012&VAL_NM_RQ=R01235').getxml() 
   columns "@Date"  varchar2(10),
           "Value"  number
)
;

@Date      Value
---------- -----
02.03.2012 29,2889 
03.03.2012 29,296 
06.03.2012 29,2892 
07.03.2012 29,4508 
08.03.2012 29,6621 
12.03.2012 29,5406 
13.03.2012 29,6666 
14.03.2012 29,5091 

 8 rows selected 
14 мар 12, 19:44    [12248806]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность чисел  [new]
vadipok
Member

Откуда:
Сообщений: 1001
-2-,

В другой раз учту, спасибо!!
14 мар 12, 20:41    [12249009]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить