如何在 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);
这会生成行。您可以填写您想要的数据。
我有两个 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);
这会生成行。您可以填写您想要的数据。