一个数据库算法问题,请教各位大神!
我是个新人,今天发了一个贴,但是在电脑上刷屏没有刷出来,我以为没有发送成功,所以又发了几次,现在被限制发帖。只能重新注册个号,再详细描述下问题。跪请各位大神指教,感激不尽!!!
现在有两张表:
表1:一个字段为id,time,c1,c2
表1:一个字段为id,time,c3
还有一个计算公式,例如c1+c2/c3,
现在需要生成一个动态表:字段为id,time,c1,c2,c3,result,其中result存放c1,c2,c3通过公式计算的结果。
c1、c2字段的数据通过下面的sq语句按照id进行汇总,汇总算法为求和:
select sum(c1),sum(c2) from table1 group by id,time;
c3字段的数据通过下面的sq语句按照id进行汇总,汇总算法为求和:
select sum(c3) from table2 group by id,time;
现在需要将c1、c2和c3汇总的数据先放到缓存里(因为字段来自不同的表,所以直接插入到目标表效率较低),然后再将缓存里的数据逐条插入到目标表里,然后再从目标表里取出数据按照公式进行计算,插入到result字段。
请大神们指教下这个问题有没有比较高效的实现方法,小弟刚学习java不久,写了实现代码,但是感觉太繁琐,跪求大侠们指教~~
举个例子:
例如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