84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
我在mysql中有一个DataTime的timestamp列,还有个rtd的列存储的是float类型数据 DataTime每小时有一条,我需要计算每个小时的24个小时滑动平均值,比如 2号0点的数据是 1号1点到2号0点的24条数据做平均 2号1点的数据是 1号2点到2号1点的24条数据做平均 。。。。。。 以此类推
有办法用一条语句来实现么? 我只知道用循环取24次肯定是可以实现,有办法用一条SQL实现么?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
时间序列数据不适合在SQL中做运算。你应当考虑在程序中运算。
数据库设计中的第一范式:如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。你这个模型中数据跟当前时间存在关联,显然不符合第一范式,不建议存在数据库里面.建议写到 Memcache 里面,然后使用 Cron job 来更新数值.
如果一定要用数据库来实现,也可以不用循环来求平均值的.
SELECT avg(val) as avgVal FROM `table` WHERE `DataTime` < unix_timestamp('2013-12-02 02:00:00') ORDER BY `DataTime` DESC LIMIT 24;
取出来的就是 2013-12-02 02:00:00 过去 24 小时的平均值.
时间序列数据不适合在SQL中做运算。你应当考虑在程序中运算。
数据库设计中的第一范式:如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。你这个模型中数据跟当前时间存在关联,显然不符合第一范式,不建议存在数据库里面.建议写到 Memcache 里面,然后使用 Cron job 来更新数值.
如果一定要用数据库来实现,也可以不用循环来求平均值的.
取出来的就是 2013-12-02 02:00:00 过去 24 小时的平均值.