| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.moral.mapper.HistoryFiveMinutelyMapper"> |
| | | |
| | | <select id="getFiveMinutesSensorData" resultType="java.util.LinkedHashMap"> |
| | | select |
| | | h.mac |
| | | <foreach collection="sensorKeys" open="," separator="," item="sensorKey"> |
| | | ROUND(AVG(json->'$.${sensorKey}[0]'),3) AS 'AVG${sensorKey}', |
| | | ROUND(MIN(json->'$.${sensorKey}[1]'),3) AS 'MIN${sensorKey}', |
| | | ROUND(MAX(json->'$.${sensorKey}[2]'),3) AS 'MAX${sensorKey}' |
| | | <choose > |
| | | <when test="sensorKey=='e23'"> |
| | | ROUND((CASE WHEN AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))<![CDATA[>]]>0 AND AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI()))<![CDATA[>]]>0 |
| | | THEN ATAN(AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))/AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI())))*180/PI() |
| | | WHEN AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))>0 AND AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0 |
| | | THEN (ATAN(AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))/AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI())))*180/PI())+180 |
| | | WHEN AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0 AND AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0 |
| | | THEN (ATAN(AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))/AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI())))*180/PI())+180 |
| | | ELSE (ATAN(AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))/AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI())))*180/PI())+360 |
| | | END),3) AS 'AVG${sensorKey}', |
| | | ROUND(MIN(json->'$.${sensorKey}[1]'),3) AS 'MIN${sensorKey}', |
| | | ROUND(MAX(json->'$.${sensorKey}[2]'),3) AS 'MAX${sensorKey}' |
| | | </when> |
| | | <otherwise> |
| | | ROUND(AVG(json->'$.${sensorKey}[0]'),3) AS 'AVG${sensorKey}', |
| | | ROUND(MIN(json->'$.${sensorKey}[1]'),3) AS 'MIN${sensorKey}', |
| | | ROUND(MAX(json->'$.${sensorKey}[2]'),3) AS 'MAX${sensorKey}' |
| | | </otherwise> |
| | | </choose> |
| | | </foreach> |
| | | FROM |
| | | history_minutely_${yearAndMonth} h |
| | |
| | | |
| | | <update id="createHistoryFiveMinutely" parameterType="String"> |
| | | CREATE TABLE IF NOT EXISTS `history_five_minutely_${yearAndMonth}` ( |
| | | `mac` varchar(20) CHARACTER SET latin1 DEFAULT NULL, |
| | | `mac` varchar(30) CHARACTER SET latin1 DEFAULT NULL, |
| | | `time` datetime DEFAULT NULL, |
| | | `json` json DEFAULT NULL |
| | | `json` json DEFAULT NULL, |
| | | KEY `idx_time` (`time`), |
| | | KEY `idx_mac` (`mac`) |
| | | ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
| | | </update> |
| | | |