問題:
在此先行谢过,不要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);
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
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