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可以做出预期的结果吗?
谢谢!
答案 0 :(得分:0)
假设START_TIME
和END_TIME
都是DATE
数据类型(而不是TIMESTAMP
或VARCHAR2
),并假设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)