数据库,处理oracle数据库行之间的运算,
数据库高手请进,处理oracle数据库行之间的运算,求助。
(先让业务量最小的3G小区被该2G全部吸收,如果满足拆除条件,即2G业务量加上3G业务量小于0.8,就继续吸收第二小业务量的3G小区,以此类推,直至超出0.8,超出0.8结果为否)可以借助存储过程函数,或者java来处理。
2G基站id 2G基站业务量 3G基站id 3G基站业务量 2G+3G业务量 2G是否可以承载3G
a 0.1 b1 0.1
a 0.1 b2 0.2
a 0.1 b3 0.3
a 0.1 b4 0.4
a 0.1 b5 0.5
a 0.1 b6 0.6
a 0.1 b7 0.7
a 0.1 b8 0.8
a 0.1 b9 0.9
a1 0.2 b13 0.2
a1 0.2 b14 0.2
a1 0.2 b15 0.3
a1 0.2 b16 0.3
a1 0.2 b17 0.3
计算出的结果是:
2G基站id 2G基站业务量 3G基站id 3G基站业务量 2G+3G业务量 2G是否可以承载3G
a 0.1 b1 0.1 0.2 是
a 0.1 b2 0.2 0.4 是
a 0.1 b3 0.3 0.7 是
a 0.1 b4 0.4 1.1 否
a 0.1 b5 0.5 1.6 否
a 0.1 b6 0.6 2.2 否
a 0.1 b7 0.7 2.9 否
a 0.1 b8 0.8 3.7 否
a 0.1 b9 0.9 4.6 否
a1 0.2 b13 0.2 0.4 是
a1 0.2 b14 0.2 0.6 是
a1 0.2 b15 0.3 0.9 否
a1 0.2 b16 0.3 1.2 否
a1 0.2 b17 0.3 1.5 否
------解决思路----------------------
(先让业务量最小的3G小区被该2G全部吸收,如果满足拆除条件,即2G业务量加上3G业务量小于0.8,就继续吸收第二小业务量的3G小区,以此类推,直至超出0.8,超出0.8结果为否)可以借助存储过程函数,或者java来处理。
2G基站id 2G基站业务量 3G基站id 3G基站业务量 2G+3G业务量 2G是否可以承载3G
a 0.1 b1 0.1
a 0.1 b2 0.2
a 0.1 b3 0.3
a 0.1 b4 0.4
a 0.1 b5 0.5
a 0.1 b6 0.6
a 0.1 b7 0.7
a 0.1 b8 0.8
a 0.1 b9 0.9
a1 0.2 b13 0.2
a1 0.2 b14 0.2
a1 0.2 b15 0.3
a1 0.2 b16 0.3
a1 0.2 b17 0.3
计算出的结果是:
2G基站id 2G基站业务量 3G基站id 3G基站业务量 2G+3G业务量 2G是否可以承载3G
a 0.1 b1 0.1 0.2 是
a 0.1 b2 0.2 0.4 是
a 0.1 b3 0.3 0.7 是
a 0.1 b4 0.4 1.1 否
a 0.1 b5 0.5 1.6 否
a 0.1 b6 0.6 2.2 否
a 0.1 b7 0.7 2.9 否
a 0.1 b8 0.8 3.7 否
a 0.1 b9 0.9 4.6 否
a1 0.2 b13 0.2 0.4 是
a1 0.2 b14 0.2 0.6 是
a1 0.2 b15 0.3 0.9 否
a1 0.2 b16 0.3 1.2 否
a1 0.2 b17 0.3 1.5 否
------解决思路----------------------
with table1 as
(
select 'a' col1, 0.1 col2, 'b1' col3, 0.1 col4 from dual union all
select 'a' col1, 0.1 col2, 'b2' col3, 0.2 col4 from dual union all
select 'a' col1, 0.1 col2, 'b3' col3, 0.3 col4 from dual union all
select 'a' col1, 0.1 col2, 'b4' col3, 0.4 col4 from dual union all
select 'a' col1, 0.1 col2, 'b5' col3, 0.5 col4 from dual union all
select 'a' col1, 0.1 col2, 'b6' col3, 0.6 col4 from dual union all
select 'a' col1, 0.1 col2, 'b7' col3, 0.7 col4 from dual union all
select 'a' col1, 0.1 col2, 'b8' col3, 0.8 col4 from dual union all
select 'a' col1, 0.1 col2, 'b9' col3, 0.9 col4 from dual union all
select 'a1' col1, 0.2 col2, 'b13' col3, 0.2 col4 from dual union all
select 'a1' col1, 0.2 col2, 'b14' col3, 0.2 col4 from dual union all
select 'a1' col1, 0.2 col2, 'b15' col3, 0.3 col4 from dual union all
select 'a1' col1, 0.2 col2, 'b16' col3, 0.3 col4 from dual union all
select 'a1' col1, 0.2 col2, 'b17' col3, 0.3 col4 from dual
)
select col1, col2, col3, col4
,(select min(col2)+sum(col4) from table1 b where b.col1=a.col1 and b.col3<=a.col3) col5
,case when (select min(col2)+sum(col4) from table1 b where b.col1=a.col1 and b.col3<=a.col3) < 0.8 then '是' else '否' end col6
from table1 a
order by a.col1, a.col3