加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

在Oracle / SQL中进行时间切片

发布时间:2021-03-07 02:30:22 所属栏目:站长百科 来源:网络整理
导读:我有一个包含代表工作单元的行的大型Oracle表,除了其他元数据外还有开始时间和结束时间的列. 我需要根据这些数据生成使用图,给出一些任意的过滤标准和报告时间段.例如,向我展示上周二上午7点开始的24小时内所有Alice工作的图表.每个DB行将在图中垂直堆叠. 我

我有一个包含代表工作单元的行的大型Oracle表,除了其他元数据外还有开始时间和结束时间的列.

我需要根据这些数据生成使用图,给出一些任意的过滤标准和报告时间段.例如,向我展示上周二上午7点开始的24小时内所有Alice工作的图表.每个DB行将在图中垂直堆叠.

我可以通过查询所有可能相关的行,将每个行分成1分钟的时间段并绘制结果图表,以高级语言执行此操作.但是有没有一种有效的方法来在SQL中进行切片?或者是否有现成的Oracle技术可以做到这一点?

谢谢!

解决方法

在获取数据方面,您可以使用“分组依据”和“ truncate”将数据分成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,'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

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!