我有一个包含代表工作单元的行的大型Oracle表,除了其他元数据外还有开始时间和结束时间的列.
我需要根据这些数据生成使用图,给出一些任意的过滤标准和报告时间段.例如,给我一张上周二上午7点开始的24小时内所有Alice工作的图表.每个DB行将在图中垂直堆叠.
我可以通过查询所有可能相关的行,将每个行分成1分钟的时间段并绘制结果图表,以高级语言执行此操作.但是有没有一种有效的方法来在SQL中进行切片?或者是否有现成的Oracle技术可以做到这一点?
谢谢!
在获取数据方面,您可以使用"分组依据"和" 截断 "将数据分成1分钟的间隔.例如:
SELECT user_name, truncate(event_time, 'YYYYMMDD HH24MI'), count(*) FROM job_table WHERE event_time > TO_DATE( some start date time) AND user_name IN ( list of users to query ) GROUP BY user_name, truncate(event_time, 'YYYYMMDD HH24MI')
这将给你如下的结果(假设alice有20行,在8.00和8.01之间,40行在8.01和8.02之间):
Alice 2008-12-16 08:00 20 Alice 2008-12-16 08:01 40