Oracle按时间段统计数据
我想按时间段分组显示。。。比如有数据是2010-8-1309:46:052010-8-1310:09:052010-8-1310:46:05我要按照每30分钟分段统计,然...
我想按时间段分组显示 。。。
比如有数据是 2010-8-13 09:46:05
2010-8-13 10:09:05
2010-8-13 10:46:05
我要按照每30分钟分段统计,然后统计字段显示成 00:00-00:30,其他的统计我会
一天24小时 48个字段。。。只要写出2个字段给我参考转化就可以了。。只统计1天的数据 展开
比如有数据是 2010-8-13 09:46:05
2010-8-13 10:09:05
2010-8-13 10:46:05
我要按照每30分钟分段统计,然后统计字段显示成 00:00-00:30,其他的统计我会
一天24小时 48个字段。。。只要写出2个字段给我参考转化就可以了。。只统计1天的数据 展开
1个回答
展开全部
SQL> select to_char(dtime,'yyyymmdd hh24:mi:ss') dtime,v1,v2 from test order by 1;
DTIME V1 V2
----------------- ------ ------
20100929 10:22:13 200 200
20100929 10:32:13 200 200
20100929 15:32:06 200 200
20100929 15:42:06 200 200
20100929 16:22:00 300 300
20100929 16:32:00 200 300
20100929 17:01:51 100 100
20100929 17:11:51 100 100
20100929 17:51:45 100 100
20100929 18:01:45 100 100
20100929 18:21:33 0 100
20100929 18:31:33 100 100
12 rows selected
SQL> select to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30)*30/60/24),'hh24:mi')||'-'||to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30+1)*30/60/24),'hh24:mi') period, avg(v1),sum(v2),count(*) "ROWS" from test where trunc(dtime)=to_date(&day,'yyyymmdd') group by to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30)*30/60/24),'hh24:mi')||'-'||to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30+1)*30/60/24),'hh24:mi') order by 1;
PERIOD AVG(V1) SUM(V2) ROWS
----------- ---------- ---------- ----------
10:00-10:30 200 200 1
10:30-11:00 200 200 1
15:30-16:00 200 400 2
16:00-16:30 300 300 1
16:30-17:00 200 300 1
17:00-17:30 100 200 2
17:30-18:00 100 100 1
18:00-18:30 50 200 2
18:30-19:00 100 100 1
9 rows selected
SQL>
DTIME V1 V2
----------------- ------ ------
20100929 10:22:13 200 200
20100929 10:32:13 200 200
20100929 15:32:06 200 200
20100929 15:42:06 200 200
20100929 16:22:00 300 300
20100929 16:32:00 200 300
20100929 17:01:51 100 100
20100929 17:11:51 100 100
20100929 17:51:45 100 100
20100929 18:01:45 100 100
20100929 18:21:33 0 100
20100929 18:31:33 100 100
12 rows selected
SQL> select to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30)*30/60/24),'hh24:mi')||'-'||to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30+1)*30/60/24),'hh24:mi') period, avg(v1),sum(v2),count(*) "ROWS" from test where trunc(dtime)=to_date(&day,'yyyymmdd') group by to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30)*30/60/24),'hh24:mi')||'-'||to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30+1)*30/60/24),'hh24:mi') order by 1;
PERIOD AVG(V1) SUM(V2) ROWS
----------- ---------- ---------- ----------
10:00-10:30 200 200 1
10:30-11:00 200 200 1
15:30-16:00 200 400 2
16:00-16:30 300 300 1
16:30-17:00 200 300 1
17:00-17:30 100 200 2
17:30-18:00 100 100 1
18:00-18:30 50 200 2
18:30-19:00 100 100 1
9 rows selected
SQL>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询