我需要获取在美国地理范围内均匀分布的有界随机用户样本。
鉴于我有有关用户的邮政编码信息,我想知道以下方法是否可以合理地实现我在 Oracle 11g 中的目标。
我的方法是使用邮政编码来完成美国的地理分布。
为确保所选邮政编码在美国均匀分布: - 我使用的是“区域”(前两位数字)。
要在邮政编码区域内获得随机分布:
- 对于每个邮政编码,我分配一个随机数。
- 然后,我按随机数对邮政编码区组进行排序,并选择前 N 个(以下示例中为 10 个)。
最后,(不包括在下面)我将从每个邮政编码中检索一组随机用户。
select
y.ZIP_CODE
from
(
select
x.ZIP_CODE
,x.ZIP_CODE_ZONE
,row_number()
over (
partition by x.ZIP_CODE_ZONE
order by x.random_num
)
AS row_number
from
(
select
ZIP_CODE
,ZIP_CODE_ZONE
,dbms_random.value(0,100000) as random_num
from
ZIP_CODE_TABLE
where 1=1
and COUNTRY_CODE = 'US'
) x
) y
where
y.row_number <= 10
order by
y.zip_code
,y.row_number
;
更新:
经过更多研究,我发现这种方法无法实现在美国获得“均匀”分布的信息集的目标。结果仍然存在偏差,因为邮政编码区在“大”人口中心附近“小”。因此,在这些小区域中检索用户的机会大于较大区域,因此用户聚集在人口中心附近。