17,089
社区成员
发帖
与我相关
我的任务
分享
with cte(lv, idx, rn, times, total_num) as (
select level, level, max(decode(rownum, 1, ceil(dbms_random.value(1, 10)))) over(), 1, 10 from dual connect by level <= 10
union all
select t1.lv,
row_number() over(order by t1.lv),
max(decode(rownum, 1, ceil(dbms_random.value(1, t1.total_num - 3)))) over(),
t1.times + 1,
count(1) over()
from cte t1
where t1.times < 3
and t1.idx not in (t1.rn, t1.rn + 1, t1.rn - 1)
)
select t1.lv from cte t1
where t1.idx = t1.rn;
with tab1 as (
select ceil(dbms_random.value(1, 29)) r1
from dual
)
, tab2 as (
select r1, mod(ceil(dbms_random.value(1, 65 - r1)) + r1 + 1, 100) r2
from tab1
)
, tab3 as (
select r1, r2, mod(ceil(dbms_random.value(1, 97 - r2)) + r2 + 1, 100) r3
from tab2
)
select*from tab3
;