insert into history (mac, value, time,
version)
values (#{mac,jdbcType=VARCHAR}, #{value,jdbcType=OTHER}, #{time,jdbcType=TIMESTAMP},
#{version,jdbcType=INTEGER})
insert into history
mac,
value,
time,
version,
#{mac,jdbcType=VARCHAR},
#{value,jdbcType=OTHER},
#{time,jdbcType=TIMESTAMP},
#{version,jdbcType=INTEGER},
SELECT
AVG(value->'$.${sensorKey}') AS '${sensorKey}'
FROM
history h
WHERE
h.time >= #{start}
AND h.time #{end}
AND h.mac = #{mac}
SELECT
max(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'max${sensorKey}',
MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'min${sensorKey}'
FROM
history h
WHERE
h.time >= #{start}
AND h.time #{end}
AND h.mac = #{mac}
SELECT
MIN(value->'$.${sensorKey}') AS '${sensorKey}'
FROM
history h
WHERE
h.time >= #{start}
AND h.time #{end}
AND h.mac = #{mac}
SELECT
h.mac,
ROUND((CASE WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))]]>0
THEN ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI()
WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))0
THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180
WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))0
THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180
ELSE (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+360
END),3) AS '${sensorKey}',
MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}',
MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}'
AVG(value->'$.${sensorKey}') AS '${sensorKey}',
MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}',
MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}'
FROM
history_${yearAndMonthDay} h
WHERE
h.time >= #{start}
AND h.time #{end}
group by
h.mac
SELECT
h.mac,
ROUND((CASE WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))]]>0
THEN ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI()
WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))0
THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180
WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))0
THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180
ELSE (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+360
END),3) AS '${sensorKey}',
MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}',
MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}'
AVG(value->'$.${sensorKey}') AS '${sensorKey}',
MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}',
MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}'
FROM
history h
WHERE
h.time >= #{start}
AND h.time #{end}
and h.mac in
#{mac}
group by
h.mac
SELECT
h.mac,DATE_FORMAT(time,'%Y-%m-%dT%H:%i') time,
ROUND((CASE WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))]]>0
THEN ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI()
WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))0
THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180
WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))0
THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180
ELSE (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+360
END),3) AS '${sensorKey}',
MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}',
MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}'
AVG(value->'$.${sensorKey}') AS '${sensorKey}',
MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}',
MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}'
FROM
history h
WHERE
h.time >= #{start}
AND h.time #{end}
and h.mac in
#{mac}
group by
h.mac,DATE_FORMAT(time,'%Y-%m-%dT%H:%i')
SELECT
h.mac,DATE_FORMAT(time,'%Y-%m-%dT%H:%i') time,
ROUND((CASE WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))]]>0
THEN ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI()
WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))0
THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180
WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))0
THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180
ELSE (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+360
END),3) AS '${sensorKey}',
MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}',
MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}'
AVG(value->'$.${sensorKey}') AS '${sensorKey}',
MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}',
MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}'
FROM
history h
WHERE
h.time >= #{start}
AND h.time #{end}
group by
h.mac,DATE_FORMAT(time,'%Y-%m-%dT%H:%i')
SELECT *
from history
WHERE time = #{time} and mac in
#{mac}
insert into
history_special(mac, value, time,version)
SELECT * from history WHERE time>=#{startTime} and time#{endTime} and mac in
#{mac}
delete from history where time < #{oldTime};
ALTER table history drop PARTITION ${p};
CREATE TABLE history_${yearMonthDay} (
`mac` varchar(30) DEFAULT NULL,
`value` json DEFAULT NULL,
`time` datetime DEFAULT NULL,
`version` int(11) DEFAULT NULL,
KEY `_idx_mac_time` (`mac`,`time`) USING BTREE,
KEY `_idx_mac` (`mac`) USING BTREE,
KEY `_idx_time` (`time`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC
drop table history_${yearMonthDay}