2

毎秒、電流と電圧に関するデータを書き込みます。チャート上に 50 秒間リアルタイムでデータを表示していますが、より長い時間、たとえば 1 時間または 2 時間のデータを表示したいと考えています。このデータベースから 1 時間平均で 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 に答える