2

每秒钟我都会写一些关于电流和电压的数据。我在图表上实时显示数据 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);
4

1 回答 1

3

您的查询可能如下所示:

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

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

示例 SQLFiddle 在这里

于 2013-07-02T12:07:15.750 回答