我有一个这样的主表,每隔一分钟就会得到一个值,这里我想用触发器自动计算每小时的数据。
timestamps energy
2014/11/3 04:00 10
2014/11/3 04:01 20
2014/11/3 04:02 30
2014/11/3 04:03 40
2014/11/3 04:04 50
2014/11/3 04:05 60
我的输出应该是这样的
time stamp energy
2014/11/3 04:05 210
我的代码
SELECT
CONCAT( HOUR(timestamp), ' to ', CONCAT( HOUR(timestamp), ':05:00' ) ) as time_frame,
COUNT(*)
FROM
temp
GROUP BY
DATE(timestamp),
HOUR(timestamp)
我想使用触发器
答案 0 :(得分:0)
CREATE TABLE IF NOT EXISTS `hourly` (
`d` date NOT NULL,
`h` int(11) NOT NULL,
`value` int(11) NOT NULL,
PRIMARY KEY (`d`,`h`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
CREATE TABLE IF NOT EXISTS `main` (
`timestamp` datetime NOT NULL,
`value` int(11) NOT NULL,
PRIMARY KEY (`timestamp`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
DROP TRIGGER IF EXISTS `cache_sum_hourly`;
DELIMITER //
CREATE TRIGGER `cache_sum_hourly` AFTER INSERT ON `main`
FOR EACH ROW BEGIN
INSERT INTO hourly (d,h,value) VALUES (
DATE(NEW.timestamp),
HOUR(NEW.timestamp),
NEW.value )
ON DUPLICATE KEY UPDATE hourly.value=hourly.value+NEW.value;
END
//
DELIMITER ;
但我不确定这是怎么回事。通常,您应该只能从主表中计算它。