sql - 如何在 postgres 的关联表上生成随机数据?
问题描述
我有两个表:用户和结果。一个用户有很多结果。
我需要在我们的用户表中生成 1000 万条记录,而我能够使用generate_series
postgres 中的函数来做到这一点。
现在,我想在结果表中生成数百万行。但我希望这些行有一定的分布。例如,我希望 50% 的用户只有 1 个结果。我希望 40% 有 2 个结果。我希望 10% 有 5 个结果。
有没有办法在 postgres 的结果表中生成这个随机数据?
解决方案
是的:
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);
这会生成行。您可以填写您想要的数据。
推荐阅读
- apache-kafka - 当debezium连接器从你的sql服务器获取数据时,有没有办法限制kafka连接堆空间
- javascript - 表格中的单元格和子级之间的区别
- google-sheets - Google Apps 脚本创建重复任务
- vue.js - 如何使用 vee validate 3 验证输入事件
- laravel - Laravel AWS EBS 自动扩展
- substrate - 基板节点模板错误#E0463 - 找不到 std 的 crate
- solr - 从文本中获取 Solr 字段值
- azure - 当前联合时启用 Seemless SSO
- powershell - 为什么在 Windows Server 2012 r2 上的 PowerShell ISE 中运行 Get-WindowsCapability 时出现错误?
- webpack-dev-server - 为什么 webpack 开发服务器从 gitpod 终端启动时不会自动重新加载更改页面?