首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

Oracle按时间嵌套查询有关问题

2013-06-19 
Oracle按时间嵌套查询问题?要计算数据8小时均值的最大值。比如给出8点到10点这个时间范围。也就是8点求一个1

Oracle按时间嵌套查询问题?
要计算数据8小时均值的最大值。比如给出8点到10点这个时间范围。也就是8点求一个1-8点的均值,9点求2-9点的均值,10点求3-10点的均值,然后求这几个均值的最大值。
我想嵌套查询,可是不知道里面的时间怎么随着外层的时间变化?
以上只是个例子,实际应用可能是几天内某个时间段各时间点8小时均值的最大值。
请问高手,SQL语句怎么写?Oracle按时间嵌套查询有关问题
[解决办法]


with t1 as
(
     select 1 c1,to_date('2013-05-20 01:01:01','yyyy-mm-dd hh24:mi:ss') c2,100 c3 from dual union all
     select 2 c1,to_date('2013-05-20 02:01:01','yyyy-mm-dd hh24:mi:ss') c2,200 c3 from dual union all
     select 3 c1,to_date('2013-05-20 03:01:01','yyyy-mm-dd hh24:mi:ss') c2,300 c3 from dual union all
     select 4 c1,to_date('2013-05-20 04:01:01','yyyy-mm-dd hh24:mi:ss') c2,400 c3 from dual union all
     select 5 c1,to_date('2013-05-20 05:01:01','yyyy-mm-dd hh24:mi:ss') c2,500 c3 from dual union all
     select 6 c1,to_date('2013-05-20 06:01:01','yyyy-mm-dd hh24:mi:ss') c2,600 c3 from dual union all
     select 7 c1,to_date('2013-05-20 07:01:01','yyyy-mm-dd hh24:mi:ss') c2,700 c3 from dual union all
     select 8 c1,to_date('2013-05-20 08:01:01','yyyy-mm-dd hh24:mi:ss') c2,800 c3 from dual union all
     select 9 c1,to_date('2013-05-20 09:01:01','yyyy-mm-dd hh24:mi:ss') c2,900 c3 from dual union all
     select 10 c1,to_date('2013-05-20 10:01:01','yyyy-mm-dd hh24:mi:ss') c2,1000 c3 from dual union all
     select 11 c1,to_date('2013-05-20 11:01:01','yyyy-mm-dd hh24:mi:ss') c2,1100 c3 from dual union all
     select 12 c1,to_date('2013-05-20 12:01:01','yyyy-mm-dd hh24:mi:ss') c2,1200 c3 from dual
)

select to_char(d1,'yyyy-mm-dd') dt,to_char(d1,'hh24')
[解决办法]
'-'
[解决办法]
to_char(d2,'hh24') d_scope,avg(c3) c3
from 
(
select to_date('2013-05-20 '
[解决办法]
lpad(8-8+level,2,'0')
[解决办法]
':00:00','yyyy-mm-dd hh24:mi:ss') d1,
       to_date('2013-05-20 '
[解决办法]
lpad(8+level-1,2,'0')
[解决办法]
':00:00','yyyy-mm-dd hh24:mi:ss') d2
from dual
connect by level <= 12- 8 + 1 --8为起始小时 12为结束小时 都可以作为参数


) t left join t1 on c2 between d1 and d2 
group by to_char(d1,'yyyy-mm-dd'),to_char(d1,'hh24')
[解决办法]
'-'
[解决办法]
to_char(d2,'hh24')
order by to_char(d1,'yyyy-mm-dd'),to_char(d1,'hh24')
[解决办法]
'-'
[解决办法]
to_char(d2,'hh24')


     dt       d_scope    c3
------------------------------------------
12013-05-2001-08400
22013-05-2002-09500
32013-05-2003-10600
42013-05-2004-11700
52013-05-2005-12800


[解决办法]
学习
[解决办法]
如果是几天的话 把里面构造的t表换成下面这段就可以了 构造出几天内每个时间段的表 来关联你的表 


select distinct d1+level-1 d1,d2+level-1 d2
from 
(
select to_date('2013-05-20 '
[解决办法]
lpad(8-8+level,2,'0')
[解决办法]
':00:00','yyyy-mm-dd hh24:mi:ss') d1,
       to_date('2013-05-20 '
[解决办法]
lpad(8+level-1,2,'0')
[解决办法]
':00:00','yyyy-mm-dd hh24:mi:ss') d2
from dual
connect by level <= 12- 8 + 1 --8和12为时间范围
)
connect by level <=  3  --3为天数

热点排行
Bad Request.