从1000中获得50个平均值

时间:2013-07-02 11:46:28

标签: php mysql sql

我每秒都写一些关于电流和电压的数据。我在图表上实时显示数据50秒,但我想显示更长时间的数据,例如一两个小时。我希望在一小时内从该数据库中获得50个平均分。是否可以在MySQL中执行此操作,还是应该使用PHP代替?

这是我的SQL结构和一些数据:

CREATE TABLE IF NOT EXISTS `Danni` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `ustroistvo_id` int(11) NOT NULL,
  `data` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `CurrentA` float NOT NULL,
  PRIMARY KEY (`id`),
  KEY `ustroistvo_id` (`ustroistvo_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1110 ;


INSERT INTO `Danni` (`id`, `ustroistvo_id`, `data`, `CurrentA`) VALUES
(1, 1, '2013-07-02 10:05:35', 58),
(2, 1, '2013-07-02 10:05:37', 57),
(3, 1, '2013-07-02 10:05:38', 46),
(4, 1, '2013-07-02 10:05:39', 54),
(5, 1, '2013-07-02 10:05:40', 58),
(6, 1, '2013-07-02 10:05:41', 56),
(7, 1, '2013-07-02 10:05:42', 40),
(8, 1, '2013-07-02 10:05:44', 53),
(9, 1, '2013-07-02 10:05:45', 59),
(10, 1, '2013-07-02 10:05:46', 51);

1 个答案:

答案 0 :(得分:3)

您的查询可能如下所示:

SELECT
    AVG(Value)
FROM
    table
GROUP BY
    FLOOR(UNIX_TIMESTAMP(SavedOn) / 72)

SavedOn应该是您保存值的时间。

Example SQLFiddle here