论坛首页 入门讨论版 Java

[请教] 关于某种数据计算方法(我也无法描述清楚,大概是递增数据求和的问题)

浏览 179 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-06-24
这是一个实际应用,我想了很久都没想出个很好的解决办法,只好来这里请教各位了。

某系统对我方提供Double数据,如每小时提交一次。
假设有如下
数据[1]:
3:00 --> 1302.98
4:00 --> 2532.54
5:00 --> 3701.65
6:00 --> 4908.34
7:00 --> 5638.67
8:00 --> 7287.46

以上只是某天的某个时间段的数据。
可以看出数据是不断在增大的,用户说这个数就是不断在增大的。
而实际上这个数据属于原始数据,还需要计算,比如:
3点的数据 = 4点的数据 - 3点的数据  (1229.56)
那么对应的,
4点的数据 = 5点的数据 - 4点的数据  (1169.11)

计算好在界面显示出来。
这个简单,跌代的时候减一下就可以了。

但现在用户提出,这个数据要做统计,比如当天,当月,当年的统计数据。
在数据库里就是按上面的 数据[1] 存的。

请问,可以用一条SQL算出来吗?(不能使用存储过程)
如果不能用SQL算出来,最快的计算方式该如何考虑?请各位帮忙给个思路。谢谢了。
   
最后更新时间:2008-06-24
数据库中加多一列,存入计算后的数据。
   
0 请登录后投票
最后更新时间:2008-06-24
谢谢你的回复,这个我也想到了。但是由于已有数据的原因,所以暂时把这个方法作为最后的方案。实在不行就只能这样了。

只是看起来这个问题看起来好象有个规律,也想了解下是否有什么算法。
   
0 请登录后投票
最后更新时间:2008-06-25
首先,要确定一个问题:
每天的数据是不是从头开始累计的?
也就是说,这里的“Double数据”是否是指当天到某个时刻的累计值
如果是这样的话,假定每天24时(凌晨0时)的数据是最后的一个数据,
那么,当天的合计值也就是24时的这条数据

其次,所谓的“当天,当月,当年的统计数据”
是需要用同一个SQL语句一把检索出来么?

这样的需求,在oracle下可以考虑用group by grouping sets语句实现
   
0 请登录后投票
最后更新时间:2008-06-25
armorking 写道
首先,要确定一个问题:
每天的数据是不是从头开始累计的?
也就是说,这里的“Double数据”是否是指当天到某个时刻的累计值
如果是这样的话,假定每天24时(凌晨0时)的数据是最后的一个数据,
那么,当天的合计值也就是24时的这条数据

其次,所谓的“当天,当月,当年的统计数据”
是需要用同一个SQL语句一把检索出来么?

这样的需求,在oracle下可以考虑用group by grouping sets语句实现


每天数据不是从头开始累计的。
比如现在我知道的是1508.34那么这个值是不断在增长的。日复一日,年复一年,客户是这么说的,但我在想是否能保存这么大的数据。

OH。 COOL。
我想我明白你的意思了。

3:00 --> 1000 --> 500
4:00 --> 1500 --> 500
5:00 --> 2000 --> 500
6:00 --> 2500 --> 500
7:00 --> 3000 --> 1000
8:00 --> 4000 --> 当前不知道

这样看似乎就简单了。
用8点-3点似乎就是合计的值了。。。
这么简单么?
那么也就是说,
当前的我就用24点-1点
当月就用月最后一条减第一条的。
当年类似。
如此?
好象就是如此。。。
   
0 请登录后投票
论坛首页 入门讨论版 Java

跳转论坛:
JavaEye推荐