浏览 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算出来,最快的计算方式该如何考虑?请各位帮忙给个思路。谢谢了。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-06-24
数据库中加多一列,存入计算后的数据。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-06-24
谢谢你的回复,这个我也想到了。但是由于已有数据的原因,所以暂时把这个方法作为最后的方案。实在不行就只能这样了。
只是看起来这个问题看起来好象有个规律,也想了解下是否有什么算法。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-06-25
首先,要确定一个问题:
每天的数据是不是从头开始累计的? 也就是说,这里的“Double数据”是否是指当天到某个时刻的累计值 如果是这样的话,假定每天24时(凌晨0时)的数据是最后的一个数据, 那么,当天的合计值也就是24时的这条数据 其次,所谓的“当天,当月,当年的统计数据” 是需要用同一个SQL语句一把检索出来么? 这样的需求,在oracle下可以考虑用group by grouping sets语句实现 |
|
| 返回顶楼 | |
|
最后更新时间: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点 当月就用月最后一条减第一条的。 当年类似。 如此? 好象就是如此。。。 |
|
| 返回顶楼 | |





