mysql - 计算滑动平均值
伊谢尔伦
伊谢尔伦 2017-04-17 11:16:27
[MySQL讨论组]

我在mysql中有一个DataTime的timestamp列,还有个rtd的列存储的是float类型数据
DataTime每小时有一条,我需要计算每个小时的24个小时滑动平均值,比如
2号0点的数据是 1号1点到2号0点的24条数据做平均
2号1点的数据是 1号2点到2号1点的24条数据做平均
。。。。。。
以此类推

有办法用一条语句来实现么?
我只知道用循环取24次肯定是可以实现,有办法用一条SQL实现么?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
阿神

时间序列数据不适合在SQL中做运算。你应当考虑在程序中运算。

ringa_lee

数据库设计中的第一范式:如果一个关系模式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 小时的平均值.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号