首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MS SQL server中将10%的数据集拆分为“控制”,90%划分为“测试”

如何在MS SQL server中将10%的数据集拆分为“控制”,90%划分为“测试”
EN

Stack Overflow用户
提问于 2018-12-30 16:16:34
回答 2查看 468关注 0票数 3

上下文:I有一个表,其中包含RetailerCode、CustomerID、分段,如下所示

代码语言:javascript
复制
RetailerCode    CID        Segment
A6005         13SVC15       High
A6005         19VDE1F       Low
A6005         1B3BD1F       Medium
A6005         1B3HB48       Medium
A6005         1B3HB49       Low
A9006         1B3HB40       High
A9006         1B3HB41       High
A9006         1B3HB43       Low
A9006         1B3HB46       Medium

在这里,我希望将数据集划分为控制和测试,如下所示,对于每个RetailerCode,我都有一组客户,每个客户都被标记为一个区段。我需要用这样的方式来划分

为每一家零售商

  • 10%的高客户进行控制,其余90%的高客户进行测试。
  • 10%的媒体客户进行控制,其余90%的媒体客户进行测试。
  • 10%的低客户进行控制,剩下90%的低客户进行测试。

我尝试了下面的代码,我知道这是错误的。

代码语言:javascript
复制
select RetailerCode, CID,Segment 
(case when row_number() over (order by newid()) <= (select 0.1* count(*) from Table)
             then 'control'
             else 'test'
        end) as group
from Table
group by RetailerCode, CID,Segment
Order by RetailerCode

有人能帮我一下吗?提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-30 16:19:42

你看起来很亲密:

代码语言:javascript
复制
select RetailerCode, CID,Segment 
       (case when row_number() over (partition by segment order by newid()) <=
                  0.1 * count(*) over (partition by segment) 
             then 'control'
             else 'test'
        end) as group
from Table
Order by RetailerCode;

我不明白为什么需要一个group by

票数 0
EN

Stack Overflow用户

发布于 2018-12-30 16:47:17

percent_rank是基于rankcount

代码语言:javascript
复制
select RetailerCode, CID,Segment 
(case when percent_rank() over (partition by segment order by newid()) <= 0.1
             then 'control'
             else 'test'
        end) as group
from Table
Order by RetailerCode

ntile是基于row_numbercount

代码语言:javascript
复制
select RetailerCode, CID,Segment 
(case when ntile(10) over (partition by segment order by newid()) = 1
             then 'control'
             else 'test'
        end) as group
from Table
Order by RetailerCode
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53979261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档