【问题标题】:Sampling in oracle在 oracle 中采样
【发布时间】:2013-01-02 16:59:23
【问题描述】:

我正在尝试从保险索赔数据库中提取样本。

例如,从 100 万份索赔数据中抽取 20% 的随机样本,其中提供商类型为“25”,年份为“2012”。数据在 sqldeveloper 中。我是一名具有基本 SQL 知识的统计学家。

【问题讨论】:

标签: oracle sample-data


【解决方案1】:

这样,您将获得随机显示的单行样本。

SELECT * FROM TABLE@ SAMPLE(10)
FETCH NEXT 1 ROWS ONLY

【讨论】:

    【解决方案2】:

    SQL 有一个内置的 SAMPLE 命令。示例:

    SELECT * FROM emp SAMPLE(25)
    

    表示 emp 中的每一行都有 25% 的机会包含在结果集中。注意:这并不意味着必须选择恰好 25% 的行

    blog 是关于采样的更多详细信息的快速阅读

    【讨论】:

      【解决方案3】:

      您可以使用SAMPLE 从表中获取一组随机的行。

      SELECT * 
      FROM   claim SAMPLE(20) 
      WHERE  type ='25' 
      AND    year = 2012;
      

      【讨论】:

      • 感谢艾伦的回复。当我不使用 where 子句时,sample() 工作正常。但是一旦我指定提供者类型和年份,它就不会带来随机样本。
      • 我有预感这是因为它在采样后应用过滤器。为了解决这个问题,在内部查询中进行过滤,然后对其进行采样:即 SELECT * FROM (SELECT * FROM WHERE ...) SAMPLE(20)。语法生疏,因此可能无法正常工作,但应该表达想法
      • @hubson: SAMPLE 仅适用于桌面,不适用于内联视图。
      猜你喜欢
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 2013-02-05
      • 2018-03-17
      相关资源
      最近更新 更多