【发布时间】:2020-11-03 11:59:24
【问题描述】:
我想从我的查询返回的行中随机选择一个样本。我已经阅读了答案How to get records randomly from the oracle database?,但我无法让 dbms_random.random 工作,所以我尝试了示例函数。
但是当我请求我的值样本时出现错误。一个可重现的例子是: 提供的示例查询只是为了重现性,它们与我的实际用例无关(因为我不想选择 7 行或类似的东西)
select * from (select 1,2,3,4,5,6,7 from dual) sample(0.1)
-- doesn't work
select * from (select 1,2,3,4,5,6,7 from dual)t sample(0.1)
-- doesn't work either
我在这里做错了什么?我的目标是从子查询的结果中随机选择一个样本,但我没有使用dbms_random.value 的权限。
【问题讨论】:
-
您确定没有
dbms_random.value的权限吗?什么返回select dbms_random.value() v from dual? -
您也可以使用
((1+mod(ora_hash(sys_guid()),1000))/1000)代替dbms_random.value()。示例:select ((1+mod(ora_hash(sys_guid()),1000))/1000) rand from dual;