【问题标题】:Does oracle SAMPLE work with where filter?oracle SAMPLE 可以与 where 过滤器一起使用吗?
【发布时间】:2013-04-24 00:05:12
【问题描述】:

我们使用 ORACLE,需要从表中随机获取一行,满足特定条件。我搜索并发现该示例在这种情况下可能有用。 但是,据我了解, Sample 返回整个表指定大小的随机子集。 所以在我们的例子中,因为我们需要匹配特定 WHERE 条件的行,所以查询可能不会返回任何行,即使表包含该过滤器的行。

从列中选择 ( SELECT column FROM table SAMPLE(10) WHERE COLUMN='abc' ) WHERE rownum = 1

在上面的查询中,如果 10% 的样本集不包含任何列 'abc' 的行,它将返回空结果(即使 90% 可能包含这样的行)

有什么建议可以纠正这种行为吗?

【问题讨论】:

  • 你可能想看看this questionSAMPLE 并不总是按预期工作。您可能希望在 Alex 的回答中使用 rownumber 方法,以确保您始终获得随机行。
  • 不确定这里有什么问题... column='abc' 可能是 7%,而不是 10。这就是结果为 null 的原因。

标签: oracle


【解决方案1】:

试试这个:

WITH data AS (SELECT column FROM table WHERE COLUMN='abc')
SELECT column FROM data SAMPLE(10) 
WHERE rownum = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 2019-11-15
    相关资源
    最近更新 更多