-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathespmeter.sql
62 lines (52 loc) · 1.9 KB
/
espmeter.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
DROP TABLE IF EXISTS `log`;
CREATE TABLE `log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ts` datetime NOT NULL DEFAULT current_timestamp(),
`timedrift` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS `counter`;
CREATE TABLE `counter` (
`idlog` int(11) NOT NULL,
`slot` smallint(6) NOT NULL,
`pulses` tinyint(3) unsigned NOT NULL,
PRIMARY KEY (`idlog`,`slot`),
CONSTRAINT `fk_counter_1` FOREIGN KEY (`idlog`) REFERENCES `log` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
DROP TABLE IF EXISTS `vcc`;
CREATE TABLE `vcc` (
`idlog` int(11) NOT NULL,
`ts` datetime NOT NULL,
`vcc` float DEFAULT NULL,
PRIMARY KEY (`ts`,`idlog`),
KEY `fk_vcc_1_idx` (`idlog`),
CONSTRAINT `fk_vcc_1` FOREIGN KEY (`idlog`) REFERENCES `log` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
DROP VIEW IF EXISTS `pulses_over_time`;
CREATE VIEW `pulses_over_time` AS
SELECT
`l`.`ts` + INTERVAL (`c`.`slot` * 5) MINUTE AS `ts`,
`c`.`pulses` AS `pulses`,
`vcc`.`vcc` AS `vcc`
FROM
(`log` `l`
JOIN `counter` `c` ON (`l`.`id` = `c`.`idlog`)
JOIN `vcc` ON (`l`.`id` = `vcc`.`idlog`));
DROP VIEW IF EXISTS `pulses_over_day`;
CREATE VIEW `pulses_over_day` AS
SELECT
CAST(`pulses_over_time`.`ts` AS DATE) AS `ts`,
SUM(`pulses_over_time`.`pulses`) AS `pulses`,
MIN(`pulses_over_time`.`vcc`) AS `vcc`
FROM
`pulses_over_time`
GROUP BY CAST(`pulses_over_time`.`ts` AS DATE);
DROP VIEW IF EXISTS `pulses_over_hour`;
CREATE VIEW `pulses_over_hour` AS
SELECT
CAST(`pulses_over_time`.`ts` AS DATE) + INTERVAL HOUR(`pulses_over_time`.`ts`) HOUR AS `ts`,
SUM(`pulses_over_time`.`pulses`) AS `pulses`,
MIN(`pulses_over_time`.`vcc`) AS `vcc`
FROM
`pulses_over_time`
GROUP BY CAST(`pulses_over_time`.`ts` AS DATE) , HOUR(`pulses_over_time`.`ts`);