sql - 您如何根据记录总数计算具有统计意义的样本量?(Postgres)
问题描述
假设我想获得去年从特定部门购买的客户的随机样本。
我想确保每个部门的随机样本在从该部门购买的客户总数中具有统计显着性(使用样本大小公式)(如果一个部门有 5000 万客户至少进行了 1 次购买) ,所需的样本量约为 390)。
我正在寻找看起来像这样的东西:我将使用ORDER BY random() LIMIT 结束我的 SQL 查询(此处为子查询以确定正确的样本大小)
如何将样本大小公式实现到 LIMIT BY 语句从中提取的子查询中?
解决方案
您可以使用窗口函数:
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
子查询中计算的部门大小 ( ) 将其插入。
推荐阅读
- java - Java中的引用类型和原始类型到底发生了什么
- java - 如何最好地在 selenium 中找到错误模式消息
- python - Python 线程,传递你刚刚创建的变量
- typescript - 在 Angular 9 的 Facebook 共享预览中显示某个网页的元数据
- c - 如何在 C 中每行打印 x 个整数?
- python - __init__ 文件在带有子模块的自定义 Python 模块中导入
- angular - CodeSandBox: Angular: ERROR TypeError: html2canvas_1.default 不是函数
- c - 用c写一个shell,关于($?)值的问题
- html - 如何在与html页面中另一个下拉列表中的数据相对应的下拉列表中显示数据?
- c - 就字节序而言,是否使用相同的掩码可移植 msb 和 lsb?