有没有人对如何生成行的T-SQL自举样品的一些想法? 用类似的问题NEWID()
或RAND()
则只是排序是你最终产生不更换随机样本。 引导应该由放回抽样来完成。
Answer 1:
这里有一个解决方案。 它首先在人口表中分配行标识符到每一行。
接着,1之间,人口,包括的行数的均匀随机整数,经由视图和RandMod()函数以使用RAND()的调用中产生,如在描述的问题3531450 。
这两个查询加盟,共同创造与更换的随机样本。
得到的,排序上NEWID()的大小为K <N自举样本并抓住顶部K行。
SELECT TOP K
key
, NEWID()
FROM
(
SELECT CAST(1 + (SELECT COUNT(*) FROM table))*RandMod() AS int) AS rowchoice
FROM table
) AS r
LEFT OUTER JOIN
(
SELECT key
, ROW_NUMBER() OVER(ORDER BY key) AS rowid
FROM table
) AS t
ON rowchoice = rowid
ORDER BY 2
文章来源: Generating Bootstrapped Samples in T-SQL