首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >oracle.Here (Row_num)给我的输出不同于oracle.Here中的count(*)是我的查询

oracle.Here (Row_num)给我的输出不同于oracle.Here中的count(*)是我的查询
EN

Stack Overflow用户
提问于 2019-11-14 14:36:45
回答 2查看 38关注 0票数 0
代码语言:javascript
运行
复制
select count(*)
from (SELECT Instance.JOB_INSTANCE_ID,
             Instance.JOB_NAME,
             Instance.JOB_KEY,
             Execution.JOB_EXECUTION_ID,
             Execution.VERSION,
             Execution.CREATE_TIME,
             Execution.START_TIME,
             Execution.END_TIME,
             Execution.STATUS,
             Execution.EXIT_CODE,
             Execution.EXIT_MESSAGE,
             Execution.LAST_UPDATED,
             Execution.JOB_CONFIGURATION_LOCATION
      FROM (SELECT JOB_INSTANCE_ID,
                   JOB_NAME,
                   JOB_KEY
            FROM PROCESOSBATCH_OWN.BATCH_JOB_INSTANCE
            order by JOB_INSTANCE_ID) Instance,
           (SELECT JOB_EXECUTION_ID,
                   VERSION,
                   JOB_INSTANCE_ID,
                   CREATE_TIME,
                   START_TIME,
                   END_TIME,
                   STATUS,
                   EXIT_CODE,
                   EXIT_MESSAGE,
                   LAST_UPDATED,
                   JOB_CONFIGURATION_LOCATION
            FROM PROCESOSBATCH_OWN.BATCH_JOB_EXECUTION
            WHERE 1 = 1
            order by JOB_INSTANCE_ID) Execution
      where Instance.JOB_INSTANCE_ID=Execution.JOB_INSTANCE_ID
      and Execution.JOB_INSTANCE_ID is not null);

  COUNT(*)
----------
      9689
代码语言:javascript
运行
复制
select max(row_num)
from (SELECT Execution.row_num,
             Instance.JOB_INSTANCE_ID,
             Instance.JOB_NAME,
             Instance.JOB_KEY,
             Execution.JOB_EXECUTION_ID,
             Execution.VERSION,
             Execution.CREATE_TIME,
             Execution.START_TIME,
             Execution.END_TIME,
             Execution.STATUS,
             Execution.EXIT_CODE,
             Execution.EXIT_MESSAGE,
             Execution.LAST_UPDATED,
             Execution.JOB_CONFIGURATION_LOCATION
      FROM (SELECT JOB_INSTANCE_ID,
                   JOB_NAME,
                   JOB_KEY
            FROM PROCESOSBATCH_OWN.BATCH_JOB_INSTANCE
            order by JOB_INSTANCE_ID) Instance,
           (SELECT rownum as row_num,
                   JOB_EXECUTION_ID,
                   VERSION,
                   JOB_INSTANCE_ID,
                   CREATE_TIME,
                   START_TIME,
                   END_TIME,
                   STATUS,
                   EXIT_CODE,
                   EXIT_MESSAGE,
                   LAST_UPDATED,
                   JOB_CONFIGURATION_LOCATION
            FROM PROCESOSBATCH_OWN.BATCH_JOB_EXECUTION
            WHERE 1 = 1
            order by JOB_INSTANCE_ID) Execution
      where Instance.JOB_INSTANCE_ID=Execution.JOB_INSTANCE_ID
      and Execution.JOB_INSTANCE_ID is not null);

MAX(ROW_NUM)
------------
        9854
EN

Stack Overflow用户

发布于 2019-11-14 18:22:13

我们没有计算最终结果的最大rownum。我们在一个内部查询rownum as row_num中定义了row_num,并在其上添加了一些过滤器。

假设这个内部查询返回了10k行,max(row_num)会在这里返回10000行。

在我们的主查询中,从2000到3000的行号被过滤掉了。由于我们已经定义了rownum as row_nummax(row_num)仍将返回10000,而同一查询上的max(rownum)将返回9000。

通常,对于相同的查询,max(rownum)会给出与count(*)相同的结果。这里不是这样,我们用max(row_num)代替了max(rownum),这可能会有所不同。

祝您编码愉快!☺

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58850766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档