【发布时间】:2018-09-09 21:11:12
【问题描述】:
我在 SQL 中有一个预先存在的表 (MYORIGTABLE),我想添加一个列,该列是另一个表 (RANDNUM10) 中列的随机样本。另一个表是我预先确定并希望从中采样的 1 列随机数样本;列名是 RANDVAL。我已经尝试了以下
select
(select randval from
(SELECT randval
FROM RANDNUM10
ORDER BY dbms_random.value)
where rownum=1) as mynum
from MYORIGTABLE
但不幸的是,这只是给了我从 RANDNUM10 中采样的相同随机数,该随机数在整个 MYORIGTABLE 长度中重复。如何执行采样以便 MYORIGTABLE 的每一行都获得一个新生成的样本?
谢谢, 克里斯蒂
【问题讨论】:
-
当你说你想添加一列时,你到底是什么意思? @Littlefoot 的回答中的
UPDATE声明可能有效,而SELECT可能无效。 -
您需要更清楚地解释您要做什么。您说过要添加一列,但随后显示了一个 SELECT 语句,您只需从表中的单个列中选择值。添加列是什么意思 - 在哪里?在MYORIGTABLE 表中?还是仅在 SELECT 查询的结果集中(显然也会从 MYORIGTABLE 中选择其他列)?
-
另外,当您说“随机样本”时,是替换还是不替换?如果您不知道这意味着什么:如果随机数是 1、2、3、4、5、6、7 - 那么“带替换的三个数字的随机样本”可能是 (3, 4, 3)。 WITHOUT REPLACEMENT 不允许重复。如果您的要求是无替换,则必须保证第二个表的行数比第一个多 - 是这样吗?