一个用递归求最大最小值的问题,请高手指点迷津。
有如下三个字段
分别是站号,时间,值
STCODE times values
A1 2007-01-01 00:02 8
A2 2007-01-02 10:02 10
A3 2007-01-01 05:01 9
A1 2007-01-03 01:02 5
A2 2007-01-01 03:12 15
A2 2007-01-04 09:22 6
A4 2007-01-07 06:24 8
A2 2007-01-06 07:02 5
... ..... ...
有一两百个站,一分钟有两条数据,现在要求出5天以来,最大两小时间的最大值(是一个累计值),及起止时间.
注:规定每次可向前推进5分钟。
如下:
分别求出从
2007-01-01 00:00 到2007-01-06 00:00 的sum(values)
2007-01-01 00:00 到2007-01-01 02:00
2007-01-01 00:05 到2007-01-01 02:05
2007-01-01 00:10 到2007-01-01 02:10
2007-01-01 00:15 到2007-01-01 02:15
2007-01-01 00:20 到2007-01-01 02:20
..........
2007-01-05 22:00 到2007-01-06 00:00
然后再求出每个站在这些时间范围内的最大值
最好及递归,谢谢!!
------解决方案--------------------说实话,我看不大明白,最大两小时间的最大值?这句话是什么意思?
------解决方案--------------------我基本明白了,任何个SQL都是好写的,就是时间段内的sum(value)
select sum(value) from table
where times between mintime and maxtime
关键是如何用递归写出多个SQL
------解决方案--------------------select to_char(t1, 'yyyy-mm-dd hh24:mi '),
to_char(t1+2/24, 'yyyy-mm-dd hh24:mi '),
sum_values
from (select b.t1, sum(a.value) sum_values
from a,
(select (rownum-1)*5/1440+to_date( '2007-1-1 ', 'yyyy-mm-dd ') t1
from all_objects
where rownum <=1440-23) b
where a.times(+)> =b.t1 and a.times(+) <b.t1+1/12
group by b.t1)