SQL获取Jobs的已用时间

时间:2012-10-10 16:37:21

标签: sql oracle

我有一个包含交易时间的表,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可以做出预期的结果吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

假设START_TIMEEND_TIME都是DATE数据类型(而不是TIMESTAMPVARCHAR2),并假设START_TIME并且END_TIME总是在同一天(即它不能在1/7开始并在1/8早完成)

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)