sql - 针对列样本中的每个唯一值2来自另一列的不同值

问题描述:

我困在一个困难的sql聚合问题上。sql - 针对列样本中的每个唯一值2来自另一列的不同值

考虑下面的表/视图:

Column1 Column2 
1  2564 
2  6550 
1  3578 
2  6548 
2  4789 
1  9876 

我想设计一个查询,以做到以下几点:

对于每一个不同的列1值,样品2分的记录。采样策略可能是某种引导/重新采样,因为可能没有太多的数据点。

因此该表将成为:

Column1  Column2 
1   9876 
1   3578 
2   6548 
2   6550 

平台:MS SQL

任何答案赞赏。

对于没有替换的随机样本:

select t.* 
from (select t.*, 
      row_number() over (partition by column1 order by newid()) as seqnum 
     from t 
    ) t 
where seqnum <= 2; 

,或者可选地:

select top (2) with ties t.* 
from t 
order by row_number() over (partition by id order by newid()); 

对于具有替换的随机样品:

随着置换:

select * 
from ((select top (1) with ties t.* 
     from t 
     order by row_number() over (partition by id order by newid()) 
    ) 
     union all 
     (select top (1) with ties t.* 
     from t 
     order by row_number() over (partition by id order by newid()) 
    ) 
    ) x; 
+0

我想要挑选15个uniq ue行,并简单地使用替换选项扩展代码。它像一个魅力。谢谢! – treeof