sql - 使用 oracle sql 进行随机数据采样,数据生成
问题描述
我需要从人群中生成一些样本数据。我想在 Oracle 11g 数据库上使用 SQL 查询来做到这一点。
这是一个人口规模为 4 且样本规模为 2 的简单工作示例:
with population as (
select 1 as val from dual union all
select 2 from dual union all
select 3 from dual union all
select 4 from dual)
select val from (
select val, dbms_random.value(0,10) AS RANDORDER
from population
order by randorder)
where rownum <= 2
(oracle sample() 函数不适用于我的 WITH 子句)
但现在我,我想“升级”或增加我的样本数据。这样我就可以获得人口数据的 150% 样本数据(例如,人口规模 4 和样本规模 6)
有没有使用 SQL 查询实现此目的的好方法?
解决方案
你可以使用CONNECT BY
:
with population(val, RANDOMORDER) as (
select level, dbms_random.value(0,10) AS RANDORDER
from dual
connect by level <= 6
ORDER BY RANDORDER
)
select val
FROM population
WHERE rownum <= 4;
推荐阅读
- keycloak - 如何在keycloak中注册后解决重定向登录页面
- javascript - 循环遍历数组 JavaScript 中的前 3 个项目(反应)
- kubernetes - “Pod The node has condition: [DiskPressure]”和“The node was low on resource: ephemeral-storage”有什么区别
- robotframework - ValueError:参数“url”的值“https://www.google.com”在运行测试时无法转换为无
- python - 如何使用 django allauth 避免重复键错误?
- sql - 我无法检测到我在下面的 pl sql 块中遇到的字符匹配错误
- r - R: drop = FALSE 不起作用,尽管定义了级别
- php - 如何从 laravel 中与 PIVOT 表的 hasMany 关系中获取值?
- g++ - VS2022 i"mport std.core" 编译需要安装什么
- autofac - Autofac 未启动 Singleton BackgroundService