日期:2014-05-17  浏览次数:20853 次

一个用递归求最大最小值的问题,请高手指点迷津。
有如下三个字段
分别是站号,时间,值

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)