按时间间隔对数据库进行统计
数据库中表有三列
ID列,[id] 主键,没有任何意义,数据库自动增长
值列,[value] 类型为float
时间列,[savetime],类型为datatime,对应值列值的时间点
表的记录可能很大,最多一年可以达到60*24*30*365=15,768,000条记录(时间列时间的间隔是一分钟),没有索引
现在要按照给定的时间间隔对表中的值列进行统计,比如说最大值,最小值和平均值,敝人想到的方法就是这样建立SQL查询语句的:
t1,t2分别查询统计的开始时间和结束时间,T查询统计时间间隔
SELECT MAX([value]) FROM tablename where [savetime] >= t1 AND [savetime] < t1+T
SELECT MAX([value]) FROM tablename where [savetime] >= t1+T AND [savetime] < t1+2T
.
.
.
SELECT MAX([value]) FROM tablename where [savetime] >= t1+nT AND [savetime] < t2
我知道这样的方法十分笨拙,效率也比较低下,达不到系统所要求的目标,所以希望能够得到大家的帮组
可能有人提出在时间了上建立索引,但由于不在万不得已的情况下,不能修改表的结构,也没有这个权限
ID列,[id] 主键,没有任何意义,数据库自动增长
值列,[value] 类型为float
时间列,[savetime],类型为datatime,对应值列值的时间点
表的记录可能很大,最多一年可以达到60*24*30*365=15,768,000条记录(时间列时间的间隔是一分钟),没有索引
现在要按照给定的时间间隔对表中的值列进行统计,比如说最大值,最小值和平均值,敝人想到的方法就是这样建立SQL查询语句的:
t1,t2分别查询统计的开始时间和结束时间,T查询统计时间间隔
SELECT MAX([value]) FROM tablename where [savetime] >= t1 AND [savetime] < t1+T
SELECT MAX([value]) FROM tablename where [savetime] >= t1+T AND [savetime] < t1+2T
.
.
.
SELECT MAX([value]) FROM tablename where [savetime] >= t1+nT AND [savetime] < t2
我知道这样的方法十分笨拙,效率也比较低下,达不到系统所要求的目标,所以希望能够得到大家的帮组
可能有人提出在时间了上建立索引,但由于不在万不得已的情况下,不能修改表的结构,也没有这个权限
...全文
相关推荐
数据仓库之数据质量建设方案.pdf
数据及时性:数据从产生到可以查看的时间间隔,也叫数据的延时时长。例如一份数据是统计离线今日的,结果都是第二天甚或第三天才能统计完,这种数据不符合数据及时性。
数据分布之指数分布(sample database classicmodels _No.10)
数据分布类型分析指数分布(Exponential Distribution):如果经过分组统计后,组的计数逐渐减少,尤其在初始的几个组中频率较高,然后逐步下降,则这可能符合指数分布的特点。指数分布通常用于描述事件之间的时间间隔,如付款时间的间隔。它具有无记忆性,且通常是右偏的,这意味着较小的间隔频率较高,间隔时间越长的频次越低。
PHP在线人数统计.pdf
清理在线数据:为了保证在线人数统计的准确性,需要定期清理长时间未刷新的记录。通过设定一个时间间隔($timeout),可以删除所有在这个时间之前记录的用户数据。
oracle统计信息高可靠性保障技术
**更强的适应性**:能够适应各种规模和类型的应用场景,无论是小型数据库还是大规模数据仓库都能有效应用。4. **更好的性能表现**:合理的统计信息更新策略有助于优化查询执行计划,提高数据库整体性能。
SQL 函数集合
DATEADD 函数:添加或减去指定的时间间隔。


应用实例
