我正在尝试从 Peoplesoft 数据库中随机抽取人口样本。在线搜索使我认为 select 语句的 Sample 子句可能是我们使用的可行选项,但是我无法理解 Sample 子句如何确定返回的样本数。我查看了此处的 Oracle 文档:http: //docs.oracle.com/cd/E11882_01/server.112/e26088/statements_10002.htm#i2065953
但是上面的参考资料只讨论了用于创建示例的语法。我提出问题的原因是我需要了解样本百分比如何确定返回的样本量。似乎它将随机数应用于您要求的百分比,然后使用种子数来计算每“n”条记录。我们的要求是我们提取准确数量的样本,例如,它们是随机选择的,并且它们代表整个表(或者至少是我们使用过滤器选择的数据分组)
在 10200 个项目的总体中,如果我需要大约 100 个项目的样本,我可以使用以下语句:
SELECT * FROM PS_LEDGER SAMPLE(1) --1 % of my total population
WHERE DEPTID = '700064'
但是,我们需要提取准确数量的样本(在本例中为 100),因此我可以选择一个几乎总是返回比我需要的数量多的样本大小,然后将其修剪 IE
SELECT Count(*) FROM PS_LEDGER SAMPLE(2.5) --this percent must always give > 100 items
WHERE DEPTID = '700064' and rownum < 101
我对此的担忧是,我的样本不会统一代表整个人口。例如,如果示例函数在创建自己的随机生成的种子后只提取每 N 条记录,那么选择 rownum < 101 将切断从表底部选择的所有记录。我正在寻找的是一种从表中准确提取 100 条记录的方法,这些记录是随机选择的,并且相当代表整个表。请帮忙!!