如何在 postgres 中的关联 table 上生成随机数据?

How to generate random data on an associated table in postgres?

我有两个 table:用户和结果。一个用户有很多结果。

我需要在我们的用户 table 中生成 1000 万条记录,我可以使用 postgres 中的 generate_series 函数来做到这一点。

现在,我想在结果中生成数百万行 table。但我希望这些行有一定的分布。例如,我希望 50% 的用户只有 1 个结果。我希望 40% 有 2 个结果。我希望 10% 有 5 个结果。

有没有办法在 postgres 的结果 table 中生成这个随机数据?

是:

select u.user_id, gs.result
from (select u.*,
             ntile(10) over (order by rand()) as decile
      from users u
     ) u cross join lateral
     generate_series(1, (case when u.decile <= 5 then 1 when u.decile <= 9 then 2 else 5 end)) gs(result);

这会生成行。您可以填写您想要的数据。