每个列值XX行的随机样本

  • 本文关键字:随机 样本 XX sql
  • 更新时间 :
  • 英文 :


我使用的是T-SQL,需要一些随机行的样本输出。通常我会按照下面的写一些SQL

Select top 10 *
from SampleTable as ST
Order by NewID()

然而,这一次我想说是100行,但它们被另一个列值平均分割,例如column"Type"。100行,其中a型25行、B型25行,C型25行和D型25行。

我的"类型"值保存到临时表中

Select top 10 *
from SampleTable as ST
Inner Join #Types as TY 
on TY.Type = ST.Type
Order by NewID()

我看过NTILE,但不确定它是否适用于我的问题。

谢谢。

ROW_NUMBERNEWID():结合使用

WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY ST.Type ORDER BY NEWID()) rn
FROM SampleTable AS ST
INNER JOIN #TypesAS TY ON TY.Type = ST.Type
)
SELECT *
FROM cte
WHERE rn <= 25;

上述解决方案将随机返回每种类型的25条记录(或者更少的记录(。

最新更新