postgresql - PostgreSQL - 创建随机百分比?
问题描述
出于测试目的,我需要创建一个具有n
随机百分比的 JSONB 对象,以便它们总和为1.0
.
显然,非常简单
SELECT jsonb_object(array_agg(ARRAY['prefix_' || n::TEXT, round(random()::NUMERIC, 2)::TEXT])) AS e
FROM generate_series(1,8) AS n
;
将产生总和不等于 的数字1.0
。
我希望解决方案要复杂得多,而且我似乎无法解决这个问题。
如何在 PostgreSQL 10 中做到这一点?
解决方案
You just have to adjust the values.
You could base your generator on this query:
WITH r AS (
SELECT random()
FROM generate_series(1, 8)
)
SELECT random/sum(random) OVER ()
FROM r;
推荐阅读
- android-studio - Android Studio Network Profiler 没有显示响应?
- javascript - 尽管 redux 状态已更新,但组件不会重新渲染
- ios - 如何在 Swift 中不四舍五入地打印只有 2 位数字的浮点数?
- javascript - 使用 Dragula 时拖动元素时出现问题
- html - 调整图像大小后填充剩余空间,保持其纵横比
- android - Android Firebase:onDisconnect 不起作用
- c# - .net - 消费者驱动的 SOAP/XML 合同?
- oracle - 如何从 Oracle SQL 中的表中取消透视
- php - PHP imap_search KEYWORD 文档如何使用
- python - 理解列表与 for 循环的复杂性