Sql Oracle-在应用某些条件之前计算行数

Sql Oracle-在应用某些条件之前计算行数,sql,oracle,Sql,Oracle,我想知道在给定查询中,如果没有rownum条件,将返回多少行: SELECT columns , [number of rows before applying rownum] AS numberofrows FROM tables WHERE conditions AND rownum < 100 是否可以不使用子查询?您需要运行两个查询。首先查找集合的大小,然后查找数据 从包含条件的表格中选择计数* 然后是第二个 请注意,在订购之前,您应该先将集合包装到另一个select 选择*从表

我想知道在给定查询中,如果没有rownum条件,将返回多少行:

SELECT columns
, [number of rows before applying rownum] AS numberofrows
FROM tables
WHERE conditions
AND rownum < 100

是否可以不使用子查询?

您需要运行两个查询。首先查找集合的大小,然后查找数据

从包含条件的表格中选择计数*

然后是第二个

请注意,在订购之前,您应该先将集合包装到另一个select

选择*从表中选择列,其中条件按列排序rownum<100


您可以在嵌套查询中使用COUNT的分析版本,例如:

SELECT * FROM
(
  SELECT table_name,
    COUNT(*) OVER() AS numberofrows
  FROM all_tables
  WHERE owner = 'SYS'
  ORDER BY table_name
)
WHERE rownum < 10;

在这种情况下,请使用条件聚合:

      select sum(case when conditions then 1 else 0 end) as NumWithConditions,
             count(*) as Total
      from tables;

它取决于您的工具,在sql*plus中,它返回到最后,在sql developer中,它只显示和返回前50行,并在查看剩余部分时更新。或者您需要使用count*函数您的标题指的是正在应用的“某些条件”;您是否只是在讨论限制rownum,如问题文本所示?“这有点模棱两可,”阿列克斯普尔说,“不,有很多条件需要应用。我想知道应用它们之后的记录计数,但在rownum之前-我很好奇是否有一些黑客可以不使用子查询来完成它。@kyooryu-好的,这是我第一次阅读它的方式;那么我想我的答案就是你想要的。除了rownum one之外的所有条件都进入内部查询。
      select sum(case when conditions then 1 else 0 end) as NumWithConditions,
             count(*) as Total
      from tables;