問題:
在此先行谢过,不要PL/SQL解法,请用SQL

test:

event_time       amount
===============
500                      1
505                      2
535                      7
570                      1
575                      1       

以30为一间隔段, 以表中的第一条记录为开始点,统计表中30这一段内的amount的和,比如

500--529  (间隔为30),在这一段内有 500 505两条数据,他们的和就是3


result:

grp_id         sum
==============
1                   3                  
2                   7
3                   2

                create table test (event_time number, amount number);
        insert into test values (500, 1);
        insert into test values (505, 2);
        insert into test values (535, 7);
        insert into test values (570, 1);
        insert into test values (575, 1);
 
 
with t1 as (
select 500+(rownum-1)*30 s,500 +  rownum*30 e ,level ln from dual connect by rownum<100
),t2 as (
select 500 time, 1 qty from dual
union all
select 505,2 from dual
union all
select 535,7 from dual
union all
select 570,1 from dual
union all
select 575,1 from dual
)
select t1.ln grp_id,sum(t2.qty) sum from t1,t2 where t2.time>=s and t2.time<=e group by t1.ln
posted on 2009-01-07 12:22  Oracle  阅读(659)  评论(0编辑  收藏  举报