| | |
| | | SELECT
|
| | | h.mac,
|
| | | <foreach collection="sensorKeys" separator="," item="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}'
|
| | | <choose >
|
| | | <when test="sensorKey=='e23'">
|
| | | ROUND((CASE WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))<![CDATA[>]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[>]]>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()))<![CDATA[<]]>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()))<![CDATA[<]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[<]]>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}'
|
| | | </when>
|
| | | <otherwise>
|
| | | 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}'
|
| | | </otherwise>
|
| | | </choose>
|
| | | </foreach>
|
| | | FROM
|
| | | history h
|
| | | history_${yearAndMonthDay} h
|
| | | WHERE
|
| | | h.time >= #{start}
|
| | | AND h.time <![CDATA[<]]> #{end}
|
| | |
| | | SELECT
|
| | | h.mac,
|
| | | <foreach collection="sensorKeys" separator="," item="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}'
|
| | | <choose >
|
| | | <when test="sensorKey=='e23'">
|
| | | ROUND((CASE WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))<![CDATA[>]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[>]]>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()))<![CDATA[<]]>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()))<![CDATA[<]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[<]]>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}'
|
| | | </when>
|
| | | <otherwise>
|
| | | 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}'
|
| | | </otherwise>
|
| | | </choose>
|
| | | </foreach>
|
| | | FROM
|
| | | history h
|
| | |
| | | SELECT
|
| | | h.mac,DATE_FORMAT(time,'%Y-%m-%dT%H:%i') time,
|
| | | <foreach collection="sensorKeys" separator="," item="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}'
|
| | | <choose >
|
| | | <when test="sensorKey=='e23'">
|
| | | ROUND((CASE WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))<![CDATA[>]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[>]]>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()))<![CDATA[<]]>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()))<![CDATA[<]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[<]]>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}'
|
| | | </when>
|
| | | <otherwise>
|
| | | 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}'
|
| | | </otherwise>
|
| | | </choose>
|
| | | </foreach>
|
| | | FROM
|
| | | history h
|
| | |
| | | SELECT
|
| | | h.mac,DATE_FORMAT(time,'%Y-%m-%dT%H:%i') time,
|
| | | <foreach collection="sensorKeys" separator="," item="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}'
|
| | | <choose >
|
| | | <when test="sensorKey=='e23'">
|
| | | ROUND((CASE WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))<![CDATA[>]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[>]]>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()))<![CDATA[<]]>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()))<![CDATA[<]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[<]]>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}'
|
| | | </when>
|
| | | <otherwise>
|
| | | 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}'
|
| | | </otherwise>
|
| | | </choose>
|
| | | </foreach>
|
| | | FROM
|
| | | history h
|
| | |
| | | <insert id="insertHistorySpecialTable">
|
| | | insert into
|
| | | history_special(mac, value, time,version)
|
| | | SELECT * from history WHERE time>=DATE_SUB(#{time}, INTERVAL 1 HOUR) and time<![CDATA[<]]>#{time} and mac in
|
| | | SELECT * from history WHERE time>=#{startTime} and time<![CDATA[<]]>#{endTime} and mac in
|
| | | <foreach collection="macList" index="index" item="mac" open="(" separator="," close=")">
|
| | | #{mac}
|
| | | </foreach>
|
| | |
| | | <update id="deletePartition">
|
| | | ALTER table history drop PARTITION ${p};
|
| | | </update>
|
| | |
|
| | | <update id="createHistoryTable" parameterType="String">
|
| | | 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
|
| | | </update>
|
| | |
|
| | | <delete id="dropHistoryTable" parameterType="String">
|
| | | drop table history_${yearMonthDay}
|
| | | </delete>
|
| | | </mapper> |