1.SAMPLE
如果表T1有数据块B1,B2
B1有记录R1,R2,R3,R4,R5
B2有记录R6,R7,R8,R9,R10
如果使用如下SQL选择50%的数据
select * from t1 sample block(50)
则返回的结果可能是数据块B1的记录
R1,R2,R3,R4,R5
也可能是数据块B2的记录
R6,R7,R8,R9,R10
也可能不返回记录集
如果使用如下SQL选择50%的数据
select * from t1 sample (50)
则返回的结果可能是
R2,R3,R5,R8,R9
也可能是如下的样子
R1,R3,R4,R8
2.DBMS_RANDOM.VALUE抽取不重复的记录
方法1:
SELECT * FROM(
SELECT * FROM t where site=1 and status is null ORDER BY dbms_random.value)
WHERE ROWNUM=1
方法2:
select *. from (
select t.*, row_number() over(order by dbms_random.value) rn
from t where site=2 and status is null) t
where t.rn = 1