【问题标题】:Get random sample of customer IDs that meet multiple conditions获取满足多个条件的客户 ID 的随机样本
【发布时间】:2021-05-14 15:02:00
【问题描述】:

我有一个包含以下列的客户数据 SQL 表:

ID, age, postcode, sign up method

我需要得到满足多个条件的数据的随机样本:

  • 20% 一个年龄组,30% 另一个年龄组
  • 50% 女性
  • x% 一个区域,y% 另一个区域,z% 另一个区域等。

有人知道我该怎么做吗?我以前创建过随机样本,但不是在这种情况下

【问题讨论】:

  • 我不明白你所说的“随机样本”是什么意思。例如,整体数据是否应该是 50% 的女性,或者您希望您的样本是数据中 50% 的女性?如果您有来自第一个年龄组的女性,那么您的总数不会达到 100%。
  • 每个地区和年龄组的女性必须占 50%。它是随机的,因为我只想要完整样本的 c.10%,它必须是随机的 10%,但样本符合上述标准

标签: sql random sample


【解决方案1】:

我认为您需要 SQL 表中的 n 个随机行。

  • 一个年龄组的 n1 行
  • n2 行来自另一个年龄组
  • 一个区域的 n3 行
  • ...

其中 n1 + n2 + n3 + ... = n。 例如 PostgreSQL:

(SELECT * FROM customers
WHERE age > g0 AND age < g1
ORDER BY RANDOM()
LIMIT (n - n1))

UNION

(SELECT * FROM customers
WHERE age > g2 AND age < g3
ORDER BY RANDOM()
LIMIT (n - n2))

UNION

(SELECT * FROM customers
WHERE region = r0
ORDER BY RANDOM()
LIMIT (n - n3))

#g0,g1,g2,g3为年龄参数,r0为区域参数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 2019-03-13
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多