Вы можете использовать такие запросы:
select * from
(
select u.*, row_number() over (order by dbms_random.value) as rn
from users u
where
dbms_random.value < 200 / (select count(1) from logs)
)
where rn <= 100;
и
select * from
(
select u.*, row_number() over (order by 1) as rn
from users u
where id in (
select round(dbms_random.value * 21e6) as id
from dual
connect by level <= 110
)
)
where rn <= 100;
Если версия вашей БД Oracle - 12c, вы можете заменить where rn <= 100
детали на fetch first 100 rows only
и удалить столбцы rn
(которые состоят из row_number()
function) в подзапросах.