我需要采用在美国地理位置均匀分布的有界随机用户样本。
我想知道以下方法是否合理,以实现我在Oracle 11g中的目标,因为我有关于用户的邮政编码信息。
我的方法是使用邮政编码来完成整个美国的地理分布。
确保所选邮政编码在美国各地均匀分布: - 我正在使用“区域”(前两位数字)。
要在邮政编码区域内获得随机分布:
最后,(不包括在下面)我会从每个邮政编码中检索一组随机用户。
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
;
更新
经过更多的研究,我发现这种方法无法实现在美国获得“统一”分布式信息集的目标。结果仍有偏见,因为邮政编码区在“大”人口中心附近“小”。因此,在这些小区域中检索用户的机会大于较大区域,因此用户聚集在人口中心附近。
答案 0 :(得分:1)
以未分类的方式检索数据库中的数据。如果缓冲区缓存中已有一些数据,则可以得到相同的结果。
select y.ZIP_CODE
from
(
select
ZIP_CODE
, ZIP_CODE_ZONE
, row_number() over (partition by ZIP_CODE_ZONE order by dbms_random.value(0,100000)) AS row_number
from ZIP_CODE_TABLE
where COUNTRY_CODE = 'US'
) y
where y.row_number <= 10
order by
y.zip_code
, y.row_number
;
答案 1 :(得分:0)
怎么样
从ZIP_CODE_TABLE SAMPLE(0.1)中选择ZIP_CODE;