0

トランザクション時間を含むテーブルがあり、1 つのバッチで複数のジョブがトリガーされます。バッチの各ジョブの経過時間を追加したい。トランザクション テーブルの形式は次のとおりです。

START_TIME          JOB END_TIME
1/7/2012 12:10:24   AA  1/7/2012 12:18:49
1/7/2012 12:10:23   AA  1/7/2012 12:10:23
1/7/2012 12:10:24   AA  1/7/2012 12:10:24
7/7/2012 16:10:33   AA  7/7/2012 16:15:23
7/7/2012 16:10:32   AA  7/7/2012 16:10:32
7/7/2012 16:10:33   AA  7/7/2012 16:10:33
7/7/2012 17:58:21   BB  7/7/2012 19:05:41
7/7/2012 16:40:25   BB  7/7/2012 16:40:25
7/7/2012 17:56:58   BB  7/7/2012 17:56:58
1/7/2012 14:00:11   BB  1/7/2012 14:47:09
1/7/2012 12:40:19   BB  1/7/2012 12:40:19
1/7/2012 13:58:33   BB  1/7/2012 13:58:33

私が達成したいことは、

DATE       JOB    TIME SPENT
1/7/2012   AA     ADDING THE TIME SPENT for AA on 1/7/2012
7/7/2012   AA     ADDING THE TIME SPENT for AA on 7/7/2012
1/7/2012   BB 
7/7/2012   BB

期待される結果が得られる SQL を教えてください。

ありがとう!!

4

1 に答える 1

0

START_TIMEEND_TIMEがどちらも ( orDATEではなく) データ型であると仮定し、とのいずれかが常に同じ日にあると仮定します (つまり、1/7 に遅く開始して 1/8 に早く終了することはできません)。TIMESTAMPVARCHAR2START_TIMEEND_TIME

SELECT trunc(start_time), 
       job, 
       sum( end_time - start_time ) total_time_in_days
  FROM your_table
 GROUP BY trunc(start_time), job
 ORDER BY job, trunc(start_time)

合計は日数で表されます。もしあなたがむしろINTERVAL背中を手に入れたいのなら

SELECT trunc(start_time), 
       job, 
       sum( numtodsinterval( end_time - start_time, 'day' ) ) elapsed_interval
  FROM your_table
 GROUP BY trunc(start_time), job
 ORDER BY job, trunc(start_time)
于 2012-10-10T16:41:59.670 に答える