您如何根据记录总数计算具有统计意义的样本量? (Postgres)

时间:2019-01-20 09:11:31

标签: sql postgresql amazon-redshift

让我们说我想随机抽取过去一年从特定部门购买的客户样本。

我想确保每个部门的随机样本在统计上都是有意义的(使用样本数量公式),该数量是从该部门购买的总客户群中(如果一个部门有至少5000万客户,且至少每购买1次,所需的样本量约为390个。

我正在寻找看起来像这样的东西: 我将以 ORDER BY random()LIMIT(此处为子查询来确定正确的样本大小

结束我的SQL查询

如何将样本大小公式实现为LIMIT BY语句从中获取的子查询?

1 个答案:

答案 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)插入它。