首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

随机抽样1:3,该怎么解决

2013-07-01 
随机抽样1:3table1 table2两个表,table1有10个记录,table2有100个记录。两个表格对应的变量名称都一样,每一

随机抽样1:3
table1 table2两个表,table1有10个记录,table2有100个记录。两个表格对应的变量名称都一样,每一个表格都有5个变量:人rs1---rs5.

想实现随机抽样:首先,对于每一个table1里面的记录,先在table2中抽取出对应的rs1变量相同的那些记录,然后再在其中随机抽三条。

也就是说,tabel1一共10个记录,那么最后抽出来table2里面30个。

可以利用VBA或者SQL
随机抽样
[解决办法]


--举个例子
declare @a table(i int)
insert into @a
select number from master..spt_values
where type='P' and number>0 and number<11
declare @b table(i int)
insert into @b
select  number from master..spt_values
where type='P' and number>0 and number<101
--以下执行
select i from @b as b where b.i=( select top 1 i from @a order by NEWID() )
union all
select * from ( select top 3 i from @b order by NEWID() ) as x


[解决办法]
select top 10 * from 
(
select rs from table1 
union all
select rs from table2
) a
order by newid()

[解决办法]
Create table tb1 (rs1 varchar(1))
Create table tb2 (rs1 varchar(1))
------------
Select tt.*
From tb1 as t1
Cross Apply
(
Select top (3) *
From tb2
Where tb2.rs1 = t1.rs1
Order by NEWID()
)as tt

试试这个~MsSqlServer2008

热点排行