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(*)
----------
      9689select 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发布于 2019-11-14 15:59:50
Count(*)从输出中返回行数。Rownum是Oracle指定表格中的行数。
您可能通过联接操作或where条件从表PROCESOSBATCH_OWN.BATCH_JOB_EXECUTION中排除了一些行。
你可以用order by选择所有的rownum,你会看到一些rownum是不匹配的。
发布于 2019-11-14 18:22:13
我们没有计算最终结果的最大rownum。我们在一个内部查询rownum as row_num中定义了row_num,并在其上添加了一些过滤器。
假设这个内部查询返回了10k行,max(row_num)会在这里返回10000行。
在我们的主查询中,从2000到3000的行号被过滤掉了。由于我们已经定义了rownum as row_num,max(row_num)仍将返回10000,而同一查询上的max(rownum)将返回9000。
通常,对于相同的查询,max(rownum)会给出与count(*)相同的结果。这里不是这样,我们用max(row_num)代替了max(rownum),这可能会有所不同。
祝您编码愉快!☺
https://stackoverflow.com/questions/58850766
复制相似问题