java新手请教个问题。。。

kongjin15 2017-10-29 09:08:38
今天发了几个贴都没描述清楚,可能表达的不好,再发一次描述一下,请各位大神们指教,请大神们指教下这个问题有没有比较高效的实现方法,小弟刚学习java不久,写了实现代码,但是感觉太繁琐,跪求大侠们指教~~

有一个计算公式c1+c2/c3,其中c1、c2、c3是某个表中的字段值(c1、c2、c3可能来自不同的表,也可能来自同一张表或者来自两张表)
现在需要生成一个动态表:字段为id,time,c1,c2,c3,result,其中result存放c1,c2,c3通过公式计算的结果。
c1、c2字段的数据通过下面的sq语句按照id进行汇总,汇总算法为求和(假设c1、c2来自 table1 ):
select sum(c1),sum(c2) from table1 group by id,time;
c3字段的数据通过下面的sq语句按照id进行汇总,汇总算法为求和(假设c3来自 table2 )
select sum(c3) from table2 group by id,time;
现在需要将c1、c2和c3汇总的数据先放到内存里(因为字段可能来自不同的表,所以将字段group by后的数据分别插入到目标表效率较低),然后再将内存里的数据逐条插入到目标表里,然后再从目标表里取出数据按照公式进行计算,插入到result字段。
举个例子:
例如table1 数据如下:
id time c1 c2
1 2017/10/29 1 2
1 2017/10/29 2 4
2 2017/10/29 3 6
2 2017/10/29 4 8
1 2017/10/30 1 2
1 2017/10/30 2 4
2 2017/10/39 3 6
2 2017/10/30 4 8
那么执行如下语句
select sum(c1),sum(c2) from table1 group by id,time;
结果是
id time c1 c2
1 2017/10/29 3 6
2 2017/10/29 7 14
1 2017/10/30 3 6
2 2017/10/30 7 14

同理假设talbe2进行group后得到以下数据:
id time c3
1 2017/10/29 3
2 2017/10/29 3
1 2017/10/30 3
2 2017/10/30 3

现在计算公式是result = (c1+c2)/c3,那么希望得到最后的表数据是
id time c1 c2 c3 result
1 2017/10/29 3 6 3 3
2 2017/10/29 7 14 3 7
1 2017/10/30 3 6 3 3
2 2017/10/30 7 14 3 7

需要用java实现,各位大神,有没有什么好的方法?
...全文
207 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
自由自在_Yu 2017-10-30
  • 打赏
  • 举报
回复
SQL: select A.id,A.time,A.c1,A.c2,B.c3,(A.c1+A.c2)/B.c3 from (select id,time,sum(c1) as c1,sum(c2) as c2 from table1 t1 group by id,time) as A, (select id,time,sum(c3) as c3 from table1 t1 group by id,time) as B where A.id=B.id and A.time=B.time 如果用java实现的话,创建一个对象,包含这些属性:id,time,c1,c2,然后把查询的结果保存在List集合里面 然后创建一个对象包含属性:id,time,c3,把查询的结果保存在List集合里面 依次取出数据,并计算结果

51,412

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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