数据库高手请进,处理oracle数据库行之间的运算,求助。

wonchenchu 2015-04-22 05:43:31
(先让业务量最小的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 否
...全文
248 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wonchenchu 2015-04-23
  • 打赏
  • 举报
回复
自己顶一个,求大神给思路啊!
wonchenchu 2015-04-23
  • 打赏
  • 举报
回复
谢谢!你的回答解决了我的问题。
zbdzjx 2015-04-23
  • 打赏
  • 举报
回复
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
wonchenchu 2015-04-23
  • 打赏
  • 举报
回复
引用 2 楼 zbdzjx 的回复:
“2G+3G业务量”是怎么算出来的?我猜了一下,第一条是2G的0.1+3G的0.1=0.2,第二条是3G的0.2+上一条的合计0.2=0.4,第三条是3G的0.3+上一条的合计0.4=0.7…… 是这样算的吗??
对的,是这样算的,怎么来实现呢?
zbdzjx 2015-04-23
  • 打赏
  • 举报
回复
“2G+3G业务量”是怎么算出来的?我猜了一下,第一条是2G的0.1+3G的0.1=0.2,第二条是3G的0.2+上一条的合计0.2=0.4,第三条是3G的0.3+上一条的合计0.4=0.7…… 是这样算的吗??

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧