|  |  |  | 
|---|
|  |  |  | `time` datetime DEFAULT NULL COMMENT '数据时间', | 
|---|
|  |  |  | `value` json DEFAULT NULL COMMENT '数据', | 
|---|
|  |  |  | `version` INT (11) DEFAULT NULL COMMENT '型号', | 
|---|
|  |  |  | KEY `idx_mac` (`mac`), | 
|---|
|  |  |  | KEY `idx_time` (`time`), | 
|---|
|  |  |  | KEY `idx_mac_time` (`mac`,`time`) | 
|---|
|  |  |  | ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT '分钟数据表' | 
|---|
|  |  |  | </update> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <select id="getHistoryFiveMinutelyData" resultType="java.util.LinkedHashMap"> | 
|---|
|  |  |  | <select id="getHistoryMinutelyData" resultType="java.util.LinkedHashMap"> | 
|---|
|  |  |  | SELECT | 
|---|
|  |  |  | mac | 
|---|
|  |  |  | <foreach collection="sensorKeys" open="," separator="," item="sensorKey"> | 
|---|
|  |  |  | <choose> | 
|---|
|  |  |  | <when test="sensorKey=='e23[0]'"> | 
|---|
|  |  |  | ROUND((CASE WHEN AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))<![CDATA[>]]>0 AND | 
|---|
|  |  |  | AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI()))<![CDATA[>]]>0 | 
|---|
|  |  |  | THEN | 
|---|
|  |  |  | ATAN(AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))/AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI())))*180/PI() | 
|---|
|  |  |  | WHEN AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))>0 AND | 
|---|
|  |  |  | AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0 | 
|---|
|  |  |  | THEN | 
|---|
|  |  |  | (ATAN(AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))/AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI())))*180/PI())+180 | 
|---|
|  |  |  | WHEN AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0 AND | 
|---|
|  |  |  | AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0 | 
|---|
|  |  |  | THEN | 
|---|
|  |  |  | (ATAN(AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))/AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI())))*180/PI())+180 | 
|---|
|  |  |  | ELSE | 
|---|
|  |  |  | (ATAN(AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))/AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI())))*180/PI())+360 | 
|---|
|  |  |  | END),3) AS '${sensorKey}' | 
|---|
|  |  |  | </when> | 
|---|
|  |  |  | <otherwise> | 
|---|
|  |  |  | ROUND(AVG(value->'$.${sensorKey}[0]'),3) AS '${sensorKey}' | 
|---|
|  |  |  | </otherwise> | 
|---|
|  |  |  | </choose> | 
|---|
|  |  |  | </foreach> | 
|---|
|  |  |  | mac, `value`, version | 
|---|
|  |  |  | FROM | 
|---|
|  |  |  | history_minutely_${timeUnits} | 
|---|
|  |  |  | WHERE time <![CDATA[>=]]> #{start} AND time <![CDATA[<]]> #{end} | 
|---|
|  |  |  | GROUP BY mac | 
|---|
|  |  |  | WHERE `time` <![CDATA[>=]]> #{start} | 
|---|
|  |  |  | AND `time` <![CDATA[<]]> #{end} | 
|---|
|  |  |  | <if test="macs != null"> | 
|---|
|  |  |  | AND mac IN | 
|---|
|  |  |  | <foreach collection="macs" item="mac" open="(" close=")" separator=","> | 
|---|
|  |  |  | #{mac} | 
|---|
|  |  |  | </foreach> | 
|---|
|  |  |  | </if> | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </mapper> | 
|---|