我需要每年从 Oracle 10g 中的这张表中每月随机抽取 200 行:
Documents
--------------------------------------
Doc_ID Date
95687 25-AUG-12
99283 21-SEP-12
87654 10-AUG-12
97111 14-SEP-12
我已经看到了该SAMPLE()
功能,但不确定如何执行标准的其他部分。
也许是这样的:
select doc_id
, date
from ( select doc_id
, date
, row_number() over (partition by trunc(date, 'MM')
order by dbms_randon.value ) as rn
from your_table )
where rn <= 200
order by date, doc_id ;
分析 ROW_NUMBER() 函数为按月分组的每条记录生成一个数字(通过使用'MM'
掩码截断日期来实现)。按 DBMS_RANDOM 排序将使排序顺序随机化。请记住在运行查询之前初始化 DBMS_RANDOM 以获得真正随机的排序顺序。
了解更多。