Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Рандомное количество дат / 20 сообщений из 20, страница 1 из 1
12.09.2018, 12:36
    #39701396
Maska321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
select (TRUNC(ADD_MONTHS(SYSDATE,-1),'MM')+rownum-1) from dual
connect by rownum <= LAST_DAY(TRUNC(ADD_MONTHS(SYSDATE,-1),'MM'))-TRUNC(ADD_MONTHS(SYSDATE,-1),'MM')+1


Есть даты за предыдущий месяц, помогите вывести рандомное количество каждой даты (от 1 до 3) ,
с помощью функции pl\sql
например:
01.08.2018
01.08.2018
01.08.2018
02.08.2018
02.08.2018
03.08.2018 и так до конца месяца
...
Рейтинг: 0 / 0
12.09.2018, 12:58
    #39701412
mibin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Maska321,
Так?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
with w_data as
(
  select trunc(add_months(sysdate, -1), 'MM') + rownum - 1 as dt,
         trunc(dbms_random.value(1,3)) as rnd
        from dual
  connect by rownum <= last_day(trunc(add_months(sysdate, -1), 'MM'))
                       - trunc(add_months(sysdate, -1), 'MM') + 1
)
select d.*
  from w_data d
       inner join lateral(
                    select 1
                      from dual
                      connect by level <= d.rnd
                  )
               on 1=1
 order by d.dt
...
Рейтинг: 0 / 0
12.09.2018, 14:04
    #39701462
Maska321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
mibin,

ORA-00905: отсутствует ключевое слово
...
Рейтинг: 0 / 0
12.09.2018, 14:05
    #39701463
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Maska321ORA-00905: отсутствует ключевое словоА ты в посовременней версии пробуй.
...
Рейтинг: 0 / 0
12.09.2018, 14:10
    #39701467
Maska321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Elic,
к сожалению нужно на такой , какая есть
...
Рейтинг: 0 / 0
12.09.2018, 14:15
    #39701471
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Maska321к сожалению нужно на такой , какая естьДурёха, ты бы её хотя бы озвучила, что ли.
...
Рейтинг: 0 / 0
12.09.2018, 14:19
    #39701475
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Maska321,

какая версія?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
  1  with w_data as
  2  (
  3    select trunc(add_months(sysdate, -1), 'MM') + rownum - 1 as dt,
  4           trunc(dbms_random.value(1,4)) as rnd
  5          from dual
  6    connect by rownum <= last_day(trunc(add_months(sysdate, -1), 'MM'))
  7                         - trunc(add_months(sysdate, -1), 'MM') + 1
  8  )
  9  select * from w_data,
 10* xmltable('1 to xs:integer($n)' passing rnd as "n" columns rn number path '.')
SQL> /

DT              RND         RN
-------- ---------- ----------
01.08.18          1          1
02.08.18          1          1
03.08.18          3          1
03.08.18          3          2
03.08.18          3          3
04.08.18          1          1
05.08.18          1          1
...



.....
stax
...
Рейтинг: 0 / 0
12.09.2018, 14:26
    #39701484
Maska321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Stax, Спасибо!
...
Рейтинг: 0 / 0
12.09.2018, 14:27
    #39701485
Maska321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Elic, 11я
...
Рейтинг: 0 / 0
12.09.2018, 14:54
    #39701524
Maska321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Stax,
Посоветуйте литературу насчет xmltable
...
Рейтинг: 0 / 0
12.09.2018, 15:19
    #39701543
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Maska321Stax,
Посоветуйте литературу насчет xmltable
тут я не советчик, плохо знаю доку
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions228.htm

имхо, Вам бы пригодилось и по XQuery
https://docs.oracle.com/cd/B19306_01/appdev.102/b14259/xdb_xquery.htm#ADXDB1700

......
stax
...
Рейтинг: 0 / 0
12.09.2018, 15:31
    #39701556
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Maska321Stax,
Посоветуйте литературу насчет xmltable

вам надо в 21672019 заменіть lateral, не обязательно XMLtable
можно напр
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
  1  with w_data as
  2  (
  3    select trunc(add_months(sysdate, -1), 'MM') + rownum - 1 as dt,
  4           trunc(dbms_random.value(1,4)) as rnd
  5          from dual
  6    connect by rownum <= last_day(trunc(add_months(sysdate, -1), 'MM'))
  7                         - trunc(add_months(sysdate, -1), 'MM') + 1
  8  )
  9  select * from w_data,
 10  table(
 11     cast(
 12        multiset(
 13              select level
 14              from dual
 15              connect by level <= rnd)
 16*     as sys.odcinumberlist)) tt
SQL> /

DT              RND COLUMN_VALUE
-------- ---------- ------------
01.08.18          3            1
01.08.18          3            2
01.08.18          3            3
02.08.18          1            1
03.08.18          2            1
03.08.18          2            2
04.08.18          1            1
05.08.18          2            1
05.08.18          2            2
06.08.18          1            1
07.08.18          3            1
07.08.18          3            2
07.08.18          3            3
08.08.18          1            1
09.08.18          1            1
....




.....
stax
...
Рейтинг: 0 / 0
12.09.2018, 15:36
    #39701561
Maska321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Maska321select (TRUNC(ADD_MONTHS(SYSDATE,-1),'MM')+rownum-1) from dual
connect by rownum <= LAST_DAY(TRUNC(ADD_MONTHS(SYSDATE,-1),'MM'))-TRUNC(ADD_MONTHS(SYSDATE,-1),'MM')+1


Есть даты за предыдущий месяц, помогите вывести рандомное количество каждой даты (от 1 до 3) ,
с помощью функции pl\sql
например:
01.08.2018
01.08.2018
01.08.2018
02.08.2018
02.08.2018
03.08.2018 и так до конца месяца

а как сделать с помощью цикла?
...
Рейтинг: 0 / 0
12.09.2018, 15:44
    #39701565
Maska321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Stax,Спасибо!
...
Рейтинг: 0 / 0
12.09.2018, 15:53
    #39701575
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Maska321а как сделать с помощью цикла?

чесно говоря я про цікл не понял
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SQL> ed
Wrote file afiedt.buf

  1  declare
  2   procedure random_date(p_dat date) is
  3   begin
  4     for i in 1..trunc(dbms_random.value(1,4)) loop
  5       dbms_output.put_line(p_dat||' '||i);
  6     end loop;
  7   end;
  8  begin
  9  for r in (
 10    select trunc(add_months(sysdate, -1), 'MM') + rownum - 1 as dt
 11    from dual
 12    connect by rownum <= last_day(trunc(add_months(sysdate, -1), 'MM'))
 13                         - trunc(add_months(sysdate, -1), 'MM') + 1
 14    ) loop
 15   random_date(r.dt);
 16  end loop;
 17* end;
SQL> /
01.08.18 1
01.08.18 2
02.08.18 1
02.08.18 2
03.08.18 1
03.08.18 2
03.08.18 3
04.08.18 1
05.08.18 1
05.08.18 2
...



.....
stax
...
Рейтинг: 0 / 0
12.09.2018, 15:54
    #39701579
Maska321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Stax,
отлично, спасибо
...
Рейтинг: 0 / 0
12.09.2018, 16:16
    #39701605
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Staxчесно говоря я про цікл не понял

Быть может имелось ввиду уйти от sql при получении списка дат?


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
set serveroutput on
declare
  l_date date := to_date('01.08.2018', 'dd.mm.yyyy');
  
  procedure random_date(p_date date) is
  begin
    for i in 1..trunc(dbms_random.value(1,4)) loop
      dbms_output.put_line(p_date ||' '|| i);
    end loop;
  end;   
begin
  loop
    random_date(l_date);
  exit when l_date = last_day(l_date);
  l_date := l_date + 1;
  end loop;
end;
/
...
Рейтинг: 0 / 0
12.09.2018, 16:28
    #39701623
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
merch,

исходил из того что в изначальном посте был селест

....
stax
...
Рейтинг: 0 / 0
13.09.2018, 11:35
    #39701959
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
Maska321Stax,
Посоветуйте литературу насчет xmltable
Настолько явной демонстрации вреда от советов Стаса я не припомню
...
Рейтинг: 0 / 0
13.09.2018, 12:36
    #39702024
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рандомное количество дат
XMLerMaska321Stax,
Посоветуйте литературу насчет xmltable
Настолько явной демонстрации вреда от советов Стаса я не припомню
так я ж не скриваю
автортут я не советчик, плохо знаю доку

ps
без табле
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
  1  with w_data as
  2    (
  3      select trunc(add_months(sysdate, -1), 'MM') + rownum - 1 as dt,
  4             trunc(dbms_random.value(1,4)) as rnd
  5            from dual
  6      connect by rownum <= last_day(trunc(add_months(sysdate, -1), 'MM'))
  7                           - trunc(add_months(sysdate, -1), 'MM') + 1
  8    )
  9  ,pivot as (
 10    select 1 id from dual union all
 11    select 2 from dual union all
 12    select 3 from dual )
 13  select * from w_data,pivot where id<=rnd
 14* order by 1,3
SQL> /

DT              RND         ID
-------- ---------- ----------
01.08.18          1          1
02.08.18          3          1
02.08.18          3          2
02.08.18          3          3
03.08.18          2          1
03.08.18          2          2
...




....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Рандомное количество дат / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]