我每秒都写一些关于电流和电压的数据。我在图表上实时显示数据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);
答案 0 :(得分:3)
您的查询可能如下所示:
SELECT
AVG(Value)
FROM
table
GROUP BY
FLOOR(UNIX_TIMESTAMP(SavedOn) / 72)
SavedOn应该是您保存值的时间。