是否有一种方法来查询SQL以获得样本的均匀分布。例如,如果我的一个字段是State字段…我想查询前5000个结果(100从每个状态)…或者另一个例子,如果我有一个字段,表示客户是新客户还是现有客户,并且我想要前500个结果,其中250个是新客户,250个是现有客户。
我试图避免两个不同的查询,我必须手动组合结果。
您可以通过使用ROW_NUMBER
来做到这一点。您在一个或多个列上划分数据,因此每个分区中的行编号从1开始。然后选择前x行并按行号列排序。
。
WITH cte
AS
(
SELECT *,ROW_NUMBER() OVER (PARTITION BY StateName ORDER BY NEWID() ) AS RN
FROM dbo.Sales
)
SELECT TOP 5 *
FROM cte
ORDER BY RN;