让我们说我想随机抽取过去一年从特定部门购买的客户样本。
我想确保每个部门的随机样本在统计上都是有意义的(使用样本数量公式),该数量是从该部门购买的总客户群中(如果一个部门有至少5000万客户,且至少每购买1次,所需的样本量约为390个。
我正在寻找看起来像这样的东西: 我将以 ORDER BY random()LIMIT(此处为子查询来确定正确的样本大小)
结束我的SQL查询如何将样本大小公式实现为LIMIT BY语句从中获取的子查询?
答案 0 :(得分:0)
您可以使用窗口功能:
select t.*
from (select t.*,
row_number() over (partition by department order by rand()) as seqnum,
count(*) over (partition by department) as cnt
from t
) t
where seqnum < <your formula based on department size here>;
我现在不知道您的统计意义公式是什么,但是您可以使用子查询中计算出的部门规模(cnt
)插入它。