You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中批量生成测试数据时如何按80%/20%比例设置Ingested字段值

Oracle中批量生成测试数据时如何按80%/20%比例设置Ingested字段值

嗨,你的思路完全没问题,用CASE语句配合Oracle的随机函数就能轻松实现这个80%/20%的比例需求!我直接给你调整好SQL,再给你拆解下逻辑:

insert into uploads (id, id_batch, file_name, upload_date, ingested)
select 
    rownum+4000 as id,
    id as id_batch,
    'Batch' || batch.start_date || ' ' || rownum as file_name,
    batch.start_date,
    -- 核心逻辑:用随机数判断设置Y/N
    CASE 
        WHEN DBMS_RANDOM.VALUE() <= 0.8 THEN 'Y'
        ELSE 'N'
    END as ingested 
from batch
cross join lateral (
    select level from dual
    where  batch.id = batch.id
    connect by level <= dbms_random.value(50,250)
);

逻辑说明:

  • DBMS_RANDOM.VALUE()默认会生成一个0到1之间的均匀分布随机数,所以当随机数≤0.8时返回'Y',剩下的返回'N',长期统计下来正好是80%/20%的比例,完全匹配你的需求。
  • 你原来的批量生成逻辑(通过cross join生成50-250条对应数据)不需要改动,只需要把固定的'Y'替换成这个CASE表达式就行。

如果需要让测试数据的比例更稳定,或者想要重复生成相同的随机结果(方便调试),可以在执行这个SQL前先设置随机种子,比如:

EXEC DBMS_RANDOM.SEED(12345); -- 固定种子后,每次生成的随机序列一致

这样调整后,你的批量测试数据就能完美满足80%已 ingest、20%未 ingest的要求啦!

备注:内容来源于stack exchange,提问作者SunnyMoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 13:07:43